js引用类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js引用类型相关的知识,希望对你有一定的参考价值。

function Person(){};

Person.prototype={
    constructor:Person,
    name:"Nacholas",
    age:29,
    friends:{"sun","li"},
    sayName:function(){
        alert(this.name);
    }
};

var person1=new Person();
var person2=new Person();

person1.friends.push("van");

alert(person1.friends);//"sun,li,van"
alert(person2.friends);//"sun,li,van"

1.Person作为一个类,会有自己的私有属性和共有属性,可以把prototype理解为共有属性。既然共有,那么就是别人也能使用改变的。

2.friends是数组,也就是引用类型的对象,push是这个数组具有的一个方法,所以调用push的时候不会改变这个对象的内存地址。但如果是直接赋值,

person1.friends="van";

 

改变了内存空间,实际上就是定义了私有属性,原有的共有属性不会改变!

3.属性的查找是基于原型链的,先找私有属性,再找共有属性,如果没有共有属性,就继续网上找(Object构造函数),直到顶端。

以上是关于js引用类型的主要内容,如果未能解决你的问题,请参考以下文章

js-权威指南学习笔记14

js数据类型

JS中的引用类型

为啥vscode中.js文件没有片段提示,但是.html文件有提示?

在本地引用 TypeScript dom lib 类型

js基本类型和引用类型的区别