这是第一种:
function ren()
{
//声明属性:
this.name="二狗";
this.age=28;
this.sex="男";
//声明方法:
this.say=function(){
console.log("我的名字是"+this.name+",性别是"+this.sex+",年龄是"+this.age+"...");
}
}
//模拟类:
var p1 = new ren();
//调用方法:
p1.say();
//查看属性:
console.log(p1.name);
这是第二种:
function ren()
{
//声明属性:
this.name="二狗";
this.age=28;
this.sex="男";
//声明方法:
this.say=function(){
console.log("我的名字是"+this.name+",性别是"+this.sex+",年龄是"+this.age+"...");
}
return this;
}
//模拟类:
var p1 =ren();
//调用方法:
p1.say();
//查看属性:
console.log(p1.name);
这个结果 是一样的,就是第一个 在 function 的结尾加了个 return this;
在外部少写了个 new ;
这是为什么呢?
函数调用时内部的this默认指向全局对象. 就是说题主例子里的this.name="二狗";都为全局变量声明, 函数最后返回的this === window(浏览器端). 你可以在函数调用后试试以下代码
全选复制放进笔记
console.log(age);
console.log(p1 === window);
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。