Skip to content

Latest commit

 

History

History
56 lines (22 loc) · 1.38 KB

README.md

File metadata and controls

56 lines (22 loc) · 1.38 KB

对象属性的读写不对等

聊一下javascript对象中的一个基本知识点:属性的读写不对等。

前提:

首先我们实现一条原型链,让对象b继承对象a,对象属性如下所示:

//因为重点不是继承,所以实现继承的方法不做介绍
var a = {
    name: 'ben',
    age: 18
}

var b = {
    salary: 88888888
}

属性的读取

console.log(b.name)   // 'ben'

之所以能够读取到name 属性是因为b继承与a,当读取bname属性的时候,发现b没有这个属性,那么就会沿着原型链向上查找,在a那里找到了name属性,就可以获取到值,然后输出出来;如果沿着整条原型链都不能找到,就会输出undefined;

属性的写入

b.name = 'haha';
console.log(b.name);  //'haha'
console.log(a.name);  //'ben'

任何时候,对一个对象的属性进行写入操作的时候,都只是真对当前对象的操作,如果当前对象没有这个属性,那么会新创建一个,如果有,则进行修改它的值。但无论如何都不会影响到他所在原型链上的任何对象的同名属性的值。

结论

由此久出现了对象属性的读写不对等:如果自己没有,读可以逆流而上的去寻找读取;而写,却只能写到自身的当前对象里面去。