原型鏈
// 屬性查詢規則
function Student(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
Student.prototype.sayHi = function () {
console.log('大家好,我是' + this.name);
}
// 建構函式的原型物件增加一個屬性
Student.prototype.test = 'abc';
var s1 = new Student('lilei', 18, '男');
var s2 = new Student('hmm', 18, '女');
// 如何存取物件的方法
// s1物件的原型物件的原型物件 Object建構函式的原型物件
// console.log(s1.__proto__.__proto__ === Object.prototype);
//
// 所有的物件都有toString()方法
// 查詢toString() 根據物件的查詢原則所有的物件都可以查詢到Obect 上的所有成員
// console.log(s1.toString());
// console.dir(s1);
// console.dir(s1.__proto__);
// console.dir(s1.__proto__.__proto__);
// 如何存取物件的屬性
// 讀取屬性 先在物件本身查詢test屬性,如果沒有找到的話,會去原型鏈上查詢
// console.log(s1.name);
// console.log(s1.test);
// 設定屬性
s1.name = 'xxx';
// test屬性在原型物件上,而在設定屬性的值的時候,不會搜尋原型鏈
// 而是直接給物件新增一個test屬性
s1.test = '123xxx';
console.log(s1.name);
console.log(s1.test);
console.log(s2.name);
console.log(s2.test);