自定义对象A,如下:
A = function() {
}
A.prototype = {
init: function() {
console.log(this);
}
}
当调用new A.prototype.init();的时候控制台打印的结果是A.init {}。
为A.prototype取别名,如下:
A = function() {
}
A.as = A.prototype = {
init: function() {
console.log(this);
}
}
调用new A.prototype.init();打印的结果变成了A.as.A.init {}。
为什么?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
console.dir(A)显示大致结构:
额,我想说我也没明白为啥会这样,而且打印了两次!
个人觉得
console.log这种非标准方法,对其打印出的结果不宜深究,没太大意义。比如,你说的两种情况我测试的结果都是:
init {}。我的浏览器:Chrome 51.0.2704.79 dev-m。
能说下怎么打印出来的么,我使用chrome、firefox都没有出现你说的情况呢
我在JavaScript设计模式(张容铭 著)这本书也遇到了这个问题。
在第二十七章:链模式中,作者解释说:
∵ new A.fn.init()的构造函数可以是A.fn.init()或者A.init();∴ A.fn.init=A.init-->A.fn.init=A.fn.A.initps:我自己没看懂,请看懂的大神帮忙分析下。还有就是chrome控制台输出的A.fn.A.init{},这里的 A.fn.A.init是对象的一个 标识/别名 ?