造轮子会用到
这是你空变量的输出,不是你console.log的输出,,就像你直接var key再回车也可以看到这个undefinde
可枚举的属性,循环遍历的时候可以遍历到,不可枚举的反之。就像数组的length属性是不可枚举的。
obj展示当前对象中自己的属性
obj枚举当前对象的属性
你代码打错了,Object.definePropertie“s” 或 Object.defineProperty
变量名 同上
先eval('var a = 1;')定义变量,然后再delete a 返回true
像这样
是不是实现变色啊!你把form的写在<script></script>中了,把他放在外面就可以了!
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gd2312">
<title>制作我的第一个网页</title>
</head>
<body>
<h1>标题1</h1>
<form name="name1"method="post" action="">
<input name="submit"type="button"value="更换背景颜色"onclick="turncolour();"><!--这是插入一个按键-->
</form>
<script language="javascript">
var arraycolour=new Array("olive","teal","red","blue","maroon","green","yellow"); <!--定义一个颜色数组-->
var n=0;
function turncolour() <!--函数完成颜色变换-->
{
if(n==(arraycolour.length-1)) n=1;
n++;
document.bgColor=arraycolour[n];
}
</script>
</body>
</html>
主要是历史问题吧,就像巨坑的IE浏览器。。
都是调用空参的构造器
老师说的是tostring这个不能遍历出来.obj.propertyIsEnumerable("toString"); tostring不可枚举,所以不能遍历
不需要精通,那你也得比前端好才行
因为obj6.y=2,你已经将y变成了一个值属性,obj6.y.z=3不会将y变成一个对象,因此结果是undefined 是正常的。下确的做法是:
var obj={x:1}
obj.y={z:3}
Object {z: 3}
obj.y.z
3
eval()里面声明的变量是可以被删除的,例如eval('var x = 1') delete x返回的就是true
是我的错 没有贴上完整的代码
稍等
你最后一行是不是多画了一个括号,总觉着应该是把数组的值传给了一个变量
var obj2 = {
x:1,
y:2,
o: {
z:3,
n:4
}
};
这样定义就可以了
第一、prototype是一个构造函数的属性,不是一个对象实例的属性,所以,你这a.prototype.y=2;这句话是不对的,因为实例a没有prototype属性,按你的目的,应该这样写:Object.prototype.y=2;这样的话,a的原型中就有y属性了,且值为2。又因为a是b的原型,所以b从原型链上继承了y属性,即b.y的值为2。(建议:自己写下代码实践一下就知道了!)附上代码:
<!DOCTYPE html> <html> <head> <title>this is a title</title> </head> <body> <script> var a =new Object(); a.x=1; Object.prototype.y=2 //写成 a.prototype.y=2是不对的!!! var b= Object.create(a); console.log(a.y); //2 console.log(b.y); //2 </script> </body> </html>
<script>
"其实是这样子的,cat.[[proto]]==>Object.prototype Object.prototypr.[[proto]]==>null";
</script>
函数function才有prototype这个默认属性。对象是没有这个默认属性的。对象有一个隐藏属性为__proto__
var obj={x1:1,X2:2,X3:3};
var i= 1,n=3;
for(;i<=n;i++){
document.write(obj['x'+i]+"<br>");
}
大小写问题 改成对应的小写x即可。
这个不是白板功能么
“=”号是赋值的意思啊
其实这里是obj里有y这个属性,这个y属性是一个对象,里面还有属性z,所以。。。
toString()方法可以将一个Number对象转换成一个字符串;
语法:
NmuebrObject.toString();
当里面的参数为2时,NumberObject就会相应的转换为2进制值表示的字符串。
var num = 10; document.write(num.toString(2));
返回的值就为二进制表示的字符串,为1010
我觉得上面的那个朋友说的很不清楚,那么我告诉一下吧,希望可以帮助你理解,一起进步
我举一个小例子来帮助你理解一下
var obj={x:1,y:2,z:3};
Object.defineProperty(obj,"f",{emuerable:false,value:4});
当我们执行
for(var i in object)
console.log(obj[i]);/输出1,2,3
Object.keys(object);//输入1,2,3
相信你看了上面的一些已经有了一些理解,你也可以再看一下下面的小知识点
for...in循环和Object.keys方法的区别,在于前者包括对象继承自原型对象的属性,而后者只包括对象本身的属性。如果需要获取对象自身的所有属性,不管enumerable的值,可以使用Object.getOwnPropertyNames方法
obi.y是要在obj这个里面有的y这个属性的。obj.y.z的意思是obj下面属性的y的属性z。与obj.z是不一样的