JavaScript 创建对象的方法
所谓对象就是用来帮助你完成一些事情是,对象是有特征和行为的,是具体特指的某一个事物。使用对象可以使程序更加整洁
1.通过Object()方法来创建
Object()是JavaScript内部的对象,使用Object创建对象的语法:
var person = new Object();
person.name = 'lisi';
person.age = 35;
person.job = 'actor';
person.sayHi = function(){
console.log('Hello,everyBody');
}
我们通过Object创建的一个person对象,这个对象有name,age,job属性;并且给这个对象定义了方法,因此我们想用这个方法时可以直接通过person.sayHi() ,即 对象.方法
注意:注意这里不能用this.name 应该用person.name因为Object()是一个对象,我们的person也是创建出来的一个对象,所以用this会是undefined,但是person这个describe()方法中使用this就可以,因为是用过这个person对象构造出来的函数
2.同过字面量法创建对象
var 对象={name:“小明”,age:20,sex:“男”…} 这是字面量表示法的语法 ,缺点:一次性对象,不方便修改,不利于提高效率,一般不建议使用
var o = {
name: 'zs',
age: 18,
sex: true,
sayHi: function () {
console.log(this.name);
}
};
3.通过自定义函数创建对象:就是自己定义一个函数,然后赋予它对象的思想。这个函数的名字首字母需要是大写的
要创建Image的新实例,必须要使用new 操作符。以这种方式调用构造函数实际上会经历一下4个步骤
(1)创建一个新对象,在内存中开辟一个空闲的空间
(2)将构造函数的作用域个给新对象(因此this就指向了这个新对象)
(3)执行构造函数中的代码(为这个新对象添加属性)
(4)返回新对象
function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
this.sayHi = function(){
console.log('Hello,everyBody');
}
}
var p1 = new Person('张三', 22, 'actor');
优点:提高代码复用率,代码可以灵活调用,方便修改,自己传的参数是什么就是什么, 既解决的重复实例化的问题又解决了对象识别的问题
缺点:没有显示的创建对象,直接将属性和方法赋给了this对象,没有return语句
4.通过工厂模式创建对象(通过Object()方法来创建的变形)
语法:function create 对象名() 这里我们用Object能够根据接受的参数来构建一个包含所有必要信息的 Object对象。可以无数次的调用这个函数,而每次它都会返回一个包含三个属性一个方法的对象。工厂模式虽然解决了创建多个相似对象的问题,但是却没有解决对象识别的问题(即怎样知道一个对象的类型)
function createPerson(name, age, job) {
var person = new Object();
person.name = name;
person.age = age;
person.job = job;
person.sayHi = function(){
console.log('Hello,everyBody');
}
return person;
}
var p1 = createPerson('张三', 22, 'actor');