为了账号安全,请及时绑定邮箱和手机立即绑定

一个关于prototype与new的问题

一个关于prototype与new的问题

神不在的星期二 2018-08-11 10:09:19
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函数是没用的。


查看完整回答
反对 回复 2018-09-22
  • 1 回答
  • 0 关注
  • 619 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信