js对象–自定义构造函数、原型链、继承、拷贝
js是一门基于对象的语言,对象是一个很重要的知识点,本文是我个人对于js对象的理解。
类(class)—js中构造函数就可以模拟class
类其实是人类对事物进行分类而得出来的类别,比如:老虎,人类,学生,这些都是类,那么 ,在代码中,我们把拥有共同特征的东西,并把这些特征抽取出来设为一个类,在js中,并没有类的概念,因为它不是面向对象语言,但他可以模拟类;
对象(object)
对象其实就是具体的事物,比如:你家的猫,某某某人。
他有自己的特征(属性)和行为(方法);
创建对象
js创建对象有下面三种方式:
- 通过系统构造函数创建:
var obj = new Object();
- 通过字面量的方式创建:
var obj1 = {};
- 通过自定义构造函数创建(Person就是自定义的构造函数):
var obj2 = new Person();
对象使用方法
- 通过.的方式赋值、取值:
var obj.name="小羊";
var name = obj.name;//name="小羊"
- 通过[]的方式赋值、取值:
var obj["name"]="小羊";
var name = obj["name"];//name="小羊"
- 对象在内存中的存储方式:
对象是引用数据类型的具体数据储存在堆里,地址储存在栈里,我们获取的是地址,然后通过地址来取值、赋值,具体如下图:
自定义构造函数
构造函数名一般首字母为大写,便于区分,函数内部通过this来给属性和方法赋值;
通过new来创建实例对象
var Person =function(name,age){
this.name = name;
this.age = age;
this.eat = function(){
console.log(this.name+"在吃饭");
}
};
var per = new Person("小羊",20);
console.log(per.name);//小羊
console.log(per.age);//20
per.eat();//小羊在吃饭
也可以通过.或[]方法给实例对象添加额外的属性和方法:
per.sex = "女";
per.sleep = function(){
console.log(this.name+"在睡觉");
};
console.log(per.sex)<