“var snoopy = new Dog("snoopy");”到底做了什么

来源:互联网 发布:sql通配符的使用 编辑:程序博客网 时间:2024/05/21 18:45
function Dog(name){this.name = name;}
var snoopy = new Dog("snoopy");
        alert("name:" + snoopy.hasOwnProperty("name"));


输出结果是“true”,这就意味着name仅仅是对生成象的成员而不是原型prototype的成员,刚开始对这个结果有些费解,仔细想想有道理,当function用作构造函数的时候this指向的是生成对象啊,想为原型增加成员得如下才可以

<span style="white-space:pre"></span>Dog.prototype.tail = true;alert("tail:" + snoopy.hasOwnProperty("tail"));

那么实际上

var snoopy = new Dog("snoopy"); 做了如下工作:

1.从Object生成了一个对象

2.然后为这个对象增加了一个成员变量name

3.又把参数name赋值给this.name

0 0
原创粉丝点击