2016-08-19 62 views
0

我正在學習javascript原型,但遇到了一個問題。關於JavaScript原型

<script type="text/javascript"> 
     function Person(){} 
     Person.prototype.name="aa"; 
     Person.prototype.sayName=function(){ 
      alert(this.name); 
     } 
     var person1=new Person(); 
     person1.name="bb"; 
     alert(person1.sayName()); 
    </script> 

爲什麼它返回2個結果。「bb」和undefined?

+0

你從哪裏得到_undefined_應該使用? –

回答

0

那是因爲你已經創建的person對象和您正在設置 name屬性的 爲「BB」和你正在做sayname的警報的函數,而不是一個屬性,它的功能

詳細的解釋: 這是你的工廠對象即函數定義

function Person(){} 
     Person.prototype.name="aa"; 
     Person.prototype.sayName=function(){ 
      alert(this.name); 
     } 

現在您創建對象的實例即可使用其屬性和功能

var per = new Person(); 

現在使用每則可以覆蓋該屬性,或者你可以調用

per.name = "bb"; 

上面的代碼將設置屬性名==「BB」所以提醒您會得到BB訪問sayName你應該使用

per.sayName(); 

這會給你的輸出「BB」

到sayName功能警報將給予BB,因爲這是指對象,然後它會尋找property.name

0

這有什麼好做的原型和屬性,一切都按預期工作。問題是person1.sayName()沒有return什麼,所以它暗含返回undefined,這就是alert(…)將打印。

你只想要一個警告,讓你無論是

Person.prototype.sayName = function() { 
    return this.name; 
}; 
… 
alert(person1.sayName()); 

Person.prototype.sayName = function() { 
    alert(this.name); 
}; 
… 
person1.sayName();