javascript代碼如下:var A = function() { function Person(name) { this.name = name;
}
var m = function() { return "Hello " + this.name; //return "Hello ";
};
Person.prototype.getGreeting = m;
return Person;
};console.dir(A);//代碼1//結果正常,無報錯//var B=A();//
console.log(new B("AAAA").getGreeting());
//代碼2//報錯:1.js:43 Uncaught TypeError: (intermediate value).getGreeting is not a function
console.log(new A().getGreeting());
//代碼3//結果正常,無報錯
console.log(new(new A())("AAAA").getGreeting());
//代碼4//結果正常,無報錯
console.log(new(A())("AAAA").getGreeting());調試過程中,發現報錯部分(即代碼2)中new A()對象的原型prototype其實是包含有getGreeting這個屬性值的。對以上代碼有如下幾個疑問:1.new A()生成的是什么?希望可以從深層次解答。2.new A()生成的對象和new(new A())("AAAA")生成對象的區別?3.代碼1和代碼3可看出new A()和A()貌似沒有什么區別,為什么?4.問題3new A()和A()如果確實是沒區別的話,那就是new關鍵字沒有起實例化作用,這該怎么理解?
訪問原型對象的函數屬性時,報該屬性‘is not a function’的錯誤?是new關鍵字
慕雪6442864
2018-10-02 13:10:47