在javascript中,一切都是对象。如何更清晰的构建对象,是用好js的关键点。本文依次阐述对象创建的几种方式:
第一种:Object构造函数创建
var Person = new Object();
Person.name = \'Nike\';
Person.age = 29;
这行代码创建了Object引用类型的一个新实例,然后把实例保存在变量Person中。
第二种:使用对象字面量表示法
var Person = {};//相当于var Person = new Object();
var Person = {
name:\'Nike\';
age:29;
}
对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。也就是说,第一种和第二种方式创建对象的方法其实都是一样的,只是写法上的区别不同。
在介绍第三种的创建方法之前,我们应该要明白为什么还要用别的方法来创建对象,也就是第一种,第二种方法的缺点所在:它们都是用了同一个接口创建很多对象,会产生大量的重复代码,就是如果你有100个对象,那你要输入100次很多相同的代码。那我们有什么方法来避免过多的重复代码呢,就是把创建对象的过程封装在函数体内,通过函数的调用直接生成对象。
第三种:使用构造函数创建对象
function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
this.sayName = function(){
alert(this.name);
};
}
var person1 = new Person(\'Nike\',29,\'teacher\');
var person2 = new Person(\'Arvin\',20,\'student\');
按照惯例,构造函数始终要应该以一个大写字母开头,而非构造函数则应该以一个小写字母开头。那么构造函数确实挺好用的,但是它也有它的缺点:就是每个方法都要在每个实例上重新创建一遍,方法指的就是我们在对象里面定义的函数。如果方法的数量很多,就会占用很多不必要的内存。于是出现了第四种创建对象的方法。
第四种:原型创建对象模式
function Person(){}
Person.prototype.name = \'Nike\';
Person.prototype.age = 20;
Person.prototype.jbo = \'teacher\';
Person.prototype.sayName = function(){
alert(this.name);
};
var person1 = new Person();
person1.sayName();
基本类型的数据值:null、undefined、number、boolean和string。
引用类型的数据值:Object (Object类型、Array类型、Date类型、Regexp类型、Function类型)。
两个关键点:当原型对象的属性值为基本类型的数据值时,通过实例对象修改属性值从而引起原型对象的属性值发生变化的情况不会发生。当原型对象属性值为引用类型的数据时,通过实例对象修改属性值从而引起原型对象的属性值发生变化的情况会发生。
当为对象实例添加一个属性时,这个属性就会屏蔽原型对象中保存的同名属性。
这时候我们就可以使用构造函数模式与原型模式结合的方式,构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性。
function Person(name,age,job){
this.name =name;
this.age = age;
this.job = job;
}
Person.prototype = {
constructor:Person,
sayName: function(){
alert(this.name);
};
}
var person1 = new Person(\'Nike\',20,\'teacher\');
合理的脚本代码可以有效的提高工作效率,减少重复劳动。
文章引用至 作者知了-联系方式1
文章引用至 作者知了-联系方式2
来源:https://blog.csdn.net/m0_67316550/article/details/123145601
本站部分图文来源于网络,如有侵权请联系删除。