永发信息网

Javascript局部变量有没有属性描述符,如果有怎么获取?

答案:3  悬赏:20  手机版
解决时间 2021-01-09 14:49
Javascript局部变量有没有属性描述符,如果有怎么获取?
最佳答案
代码如下:

function square(num){
var total = num*num;//局部变量
return total;
}
var total = 50;//全局变量
var number = square(20);
alert(total);//结果为50

function square(num){
total = num*num;//全局变量
return total;
}
var total = 50;//全局变量
var number = square(20);
alert(total);//结果为400

这细微的差别就会影响到程序的结果

代码如下:

body{
color:white;
background-color:black;
}

这些颜色不仅作用于那些直接包含在标签里的内容,还将作用于嵌套在body元素内的所有元素

id属性就像一个挂钩,它一头连着文档里的某个元素,另一头连着CSS样式表里的某个样式
document.getElementById("purchases")这个调用将返回一个对象,这个对象对应着document对象里的一个独一无二的元素,那个元素
的的id属性值为purchases
其实,文档中的每个元素都是一个对象。利用DOM提供的方法能够得到任何一个对象。
getElementsByTagName返回一个数组,即使整个文档里只有一个元素,也返回一个数组。
示例:

代码如下:

var items = document.getElementsByTagName("li");
for(var i = 0;i alert(typeof items[i]);
}

显示信息都是object

getElementByClassName
也返回一个具有相同类名的元素数组
获取和设置属性
getAttribute
object.getAttribute(attribute)
注:getAttribute方法不属于document对象,它只能通过元素节点对象调用。
setAttribute
object.setAttribute(attribute,value)
例子:
var shopping = document.getElementById("purchases");
shopping.setAttribute("title","a list of goods");
全部回答
js变量没有属性描述符吧 但是js对象是有value/configurable/writable/enumerable等数据属性描述符,也包含getter/setter等访问器属性
先来感受一下属性描述符:
var myObject = {
a: 2
};
Object.getOwnPropertyDescriptor( myObject, "a" );
// { value: 2, writable: true, enumerable: true, configurable: true }
这里可以看到,除了 value 之外,JavaScript 属性描述符有 writable,enumerable, 和 configurable 这三个特性。如果不指定的话,这三个特性都是true。但我们也可以通过 Object.defineProperty(...) 函数来指定它们为我们想要的值。
var myObject = {};
Object.defineProperty( myObject, "a", {
value: 2,
writable: true,
configurable: true,
enumerable: true
} );
// 上面的定义等同于 myObject.a = 2;
// 所以如果不需要修改这三个特性,我们不会用 `Object.defineProperty`
myObject.a; // 2
下面让我们来看看属性描述符到底能为 JavaScript 带来哪些不一样的东西。
是否可写 (Writable)
首先,属性描述符可以用来控制对象的某个属性是否可写:
// "use strict";
var myObject = {};
Object.defineProperty( myObject, "a", {
value: 2,
writable: false, // 不可写!
configurable: true,
enumerable: true
} );
myObject.a = 3; // 写入的值将会被忽略
myObject.a; // 2
如果应用了 strict mode 的话,那么 myObject.a 将会抛出 TypeError,而不是仅仅忽略写入的值。ES5 还引入了对象属性的 Getter 和 Setter,这里的 writable: false可以认为是和没有定义或者定义了没有任何操作的 setters 的情况大致等同。当然了,如果是 strict mode 下,需要在 setters 里面抛出 TypeError 来完全模拟 writable: false 的情形。
是否可配置 (Configurable)
这个特性用来描述对象的某个属性是否可以用 Object.defineProperty(...) 来重新配置:
var myObject = {
a: 2
};
myObject.a = 3;
myObject.a; // 3
Object.defineProperty( myObject, "a", {
value: 4,
writable: true,
configurable: false, // 不可配置!
enumerable: true
} );
myObject.a; // 4
myObject.a = 5;
myObject.a; // 5
Object.defineProperty( myObject, "a", {
value: 6,
writable: true,
configurable: true,
enumerable: true
} ); // TypeError
注意,一旦某个属性被指定为 configurable: false,那么就不能从新指定为configurable: true 了,这个操作是单向,不可逆的。另外,这个特性还会影响delete 操作的行为,来看一段代码:
var myObject = {
a: 2
};
myObject.a; // 2
delete myObject.a;
myObject.a; // undefined
Object.defineProperty( myObject, "a", {
value: 2,
writable: true,
configurable: false,
enumerable: true
} );
myObject.a; // 2
delete myObject.a;
myObject.a; // 2
这里可以看到,一旦指定某个属性为 configurable: false,那么 delete 操作会被忽略。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
凌渡行车记录仪怎样回放?
常山至义鸟g6o高速路况
fifaonline3现在开新号有什么奖励
正野管道式排风扇好用吗
60万元,年利率为0.475%,20年,需付利息多少元?
江淮瑞风S2汽车怎么样?
这个怎样??
额额,谁有我的世界1.14版的求了
a briton has designed what he calls
求各位社会人士帮帮忙,帮忙找下这个诈骗犯,
康佳21寸电视黑屏求助
闵熙妍这个名字可以吗?代表什么意思呢?
可以在瓷砖地面上直接做环氧自流平或是塑胶地
女子组合名,有天使寓意的
微躯感一言字谜
推荐资讯
桥梁桩基础检测有哪几种方法?
为什么会叫手撕鱿鱼
上海晶环电子有限公司怎么样?
为什么老婆觉得我口臭,跟情人接吻她却闻不到?
芬妮国际的企业文化
tan(90度+a)=1/tan是怎么来的?
草字头的莉可以组什么词
同一度数的白酒稀释与没稀释喝下去度数会一样
鹰潭信江新区怎么样
gta5电脑版打架怎么躲闪
汇率是0.84,280港币等于多少人民币
我与海伦差多远为题的文章
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?