function A(){ this.a = '1'; this.b = '2'; this.init();}A.prototype.init = function(){ console.log('000000');}new A()上面的这个可以输出000000,而下面这个就不行:function A(){ this.a = '1'; this.b = '2'; this.init();}A.init = function(){ console.log('000000');}new A()这是为什么呢?
1 回答
MM们
TA贡献1886条经验 获得超2个赞
使用new的时候大概就像这个样子:
Function.method('new', function() { var that = Object.create(this.prototype); // 刚刚打错了,第一个参数是that // 这句话就是调用构造函数,也就是执行你上面的 this.a = ... var other = this.apply(that, arguments); return (typeof other === 'object' && other) || that; }
(摘抄自《JavaScript语言精粹》)
也就是说,先从原型创建一个对象,然后调用构造函数的内容,你这里的话就是执行
this.a = '1';
这些内容
所以你直接给A加一个init函数是没用的。
添加回答
举报
0/150
提交
取消