面向对象/自定义构造函数创建对象

2017-03-19  本文已影响0人  曾基锟

自定义构造函数创建对象

基本写法

function 构造函数名(参数1,参数2,参数3...) {

//设置对象的属性

this.属性01 = 参数1;

this.属性02 = 参数2;

//设置对象的方法

this.方法01 = function () {

//.....

};

this.方法02 = function () {

//.....

}

}

//自定义构造函数方式创建对象

var 对象01 = new 构造函数名(实参01,实参02,实参03...);

var 对象02 = new 构造函数名(实参01,实参02,实参03...);

代码示例

function CreateBook (name,price,author,press) {

this.name = name;

this.price = price;

this.author = author;

this.press = press;

this.read = function () {

console.log("我的书名为:"+this.name+",作者为"+this.author+"....");

};

}

var b1 = new CreateBook("声名狼藉者的的生活","42.00","福柯","北京大学出版社");

var b2 = new CreateBook("人性的枷锁","49.00","毛姆","华东师范大学出版社");

var b3 = new CreateBook("悟空传","28.00","今何在","湖南文艺出版社");

//打印对象的属性,并调用对象的方法测试

console.log(b1.author);

console.log(b2.author);

console.log(b3.author);

b1.read();

b2.read();

b3.read();

构造函数与new关键字

构造函数和普通函数的区别:函数的首字母大写

构造函数的作用:用于完成对象的初始化

new关键字的作用:用于创建对象(Object类型)

自定义构造函数和简单工厂函数的对比

① 函数的首字母大写(用于区别构造函数和普通函数)

② 创建对象的过程是由new关键字实现

③ 在构造函数内部会自动的创建新对象,并赋值给this指针

④ 自动返回创建出来的对象

构造函数的执行过程

① 使用new关键字创建对象

② 把新创建出来的对象赋值给this

③ 在构造函数内部,使用this为新创建出来的对象设置属性和方法

④ 默认返回新创建的对象(普通函数如果不显示的return则默认返回undefined)。

构造函数的返回值

01 如果在构造函数中没有显示的return,则默认返回的是新创建出来的对象

02 如果在构造函数中显示的return,则依照具体的情况处理

[01] return 的是对象,则直接返回该对象,取而代之本该默认返回的新对象

[02] return 的是null或基本数据类型值,则返回新创建的对象

构造函数方式创建对象存在的问题

每次创建对象,都会重新创建函数,那么如果创建的对象数量很多,而对象方法内部的实现一模一样,则造成了资源浪费

上一篇下一篇

猜你喜欢

热点阅读