[英]javascript reference to prototype function is undefined in constructor
給定以下對象:
function MyObject() {
window.myFunc1 = this.myFunc1;
window.myFunc2 = this.__proto__.myFunc2;
}
MyObject.prototype.anotherFunc = function () {
window.myFunc3 = this.myFunc3;
window.myFunc4 = this.__proto__.myFunc4;
}
MyObject.prototype.myFunc1 = function () { console.log(1); }
MyObject.prototype.myFunc2 = function () { console.log(2); }
MyObject.prototype.myFunc3 = function () { console.log(3); }
MyObject.prototype.myFunc4 = function () { console.log(4); }
var o = new MyObject();
o.anotherFunc();
window.myFunc1();
window.myFunc2();
window.myFunc3();
window.myFunc4();
擺弄我所期望的,但是在離子框架下使用ios應用程序進行測試時,結果(通過Safari調試器測試)是:
window.myFunc1 -> undefined
window.myFunc2 -> it works!
window.myFunc3 -> it works!
window.myFunc4 -> it works!
原型在創建之前是否已附加到對象上?
編輯
附上小提琴和工作示例,微調了問題
如果您以不尋常的方式創建對象,則可能會發生這種情況, this
必然會導致與您期望的有所不同。 就我而言,我是從node
模塊中導出構造函數,並使用new require('module')();
創建對象new require('module')();
,具有與undefined
原型函數相同的效果。
我得到以下結果[…]
我無法重現。 嘗試這個:
function MyObject() {
console.log(this.myFunc1);
console.log(Object.getPrototypeOf(this).myFunc2);
}
MyObject.prototype.anotherFunc = function () {
console.log(this.myFunc3);
console.log(Object.getPrototypeOf(this).myFunc4);
}
MyObject.prototype.myFunc1 = function () { }
MyObject.prototype.myFunc2 = function () { }
MyObject.prototype.myFunc3 = function () { }
MyObject.prototype.myFunc4 = function () { }
var o = new MyObject();
o.anotherFunc()
原型在創建之前是否已附加到對象上?
嗯不 原型不能真正地附加到不存在的對象上:-)最好將其同時發生,即一個對象是用原型創建的,沒有一個對象就不存在。
您可能要說的是,對象(及其原型)是在執行構造函數之前創建的-是的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.