標識符命名規則
.區分大小寫,,Name和name是兩個不同的變量
.標示符可以以下劃線,美元$或者字母開頭,但是不能是數字,
.標識符可以由下劃線,美元符$,字母,數字組成
神秘對象的訪問
構造函數的prototype屬性
function Person(){}
//通過構造函數的原型屬性prototype可以直接訪問原型
Person.prototype;
function Person(){}
var p = new Person();
//以前不能直接通過p來訪問神秘對象
實例對象的proto屬性
proto屬性最早是火狐瀏覽器引入的,用以通過實例對象來訪問原型,這個屬性在早期是非標準的屬性有了proto屬性,就可以通過構造函數創建出來的對象直接訪問神秘對象
function Person(){}
var p = new Person();
//實例對象的__proto__屬性可以方便的訪問到原型對象
p.__proto__;
//既然使用構造函數的`prototype`和實例對象的`__proto__`屬性
//都可以訪問原型對象
//就有如下結論
p.__proto__ === Person.prototype;
proto屬性的用途
可以用來訪問原型
在實際開發中除非有特殊的需求,不要輕易的使用實例對象的proto屬性去修改原型的成員,
在調試過程中,可以輕易的查看原型的成員
早期如何通過實例對象訪問原型?
可以使用實例對象訪問構造函數屬性constuctor
var p = new Person();
p.constructor.prototype;
給實例繼承自原型的屬性賦值需要注意的問題
function Person(){};
Person.prototype.name = "周華健";
var o1 = new Person();
var o2 = new Person();
o1.name = "李宗盛"; //這里修改的不是原型對象的name屬性,而是給o1自己新增了一個name屬性,進行了賦值
//我們可以對比一下o1和o2的name值
console.log(o1.name , o2.name);