javascript生成对象编程模式

来源:互联网 发布:linux 脚本优先级 编辑:程序博客网 时间:2024/04/19 21:02
1.通过new构造函数生成对象function Student(props) {    this.name = props.name || '匿名'; // 默认值为'匿名'    this.grade = props.grade || 1; // 默认值为1}Student.prototype.hello = function () { //使生成的对象共用一个原型函数,节省内存    alert('Hello, ' + this.name + '!');};function createStudent(props) {    return new Student(props || {})}

这个createStudent()函数有几个巨大的优点:一是不需要new来调用,二是参数非常灵活,可以不传,也可以这么传:

var xiaoming = createStudent({    name: '小明'});xiaoming.grade; // 12.通过指定原型对象构造函数xiaoming.__proto__=Student或xiaoming=Object.create(Student),  通过这种生成的对象会有各自的run()函数,浪费内存
// 原型对象:var Student = {    name: 'Robot',    height: 1.2,    run: function () {        console.log(this.name + ' is running...');    }};function createStudent(name) {    // 基于Student原型创建一个新对象:    var s = Object.create(Student); //指定原型对象为student    // 初始化新对象:    s.name = name;    return s;}var xiaoming = createStudent('小明');xiaoming.run(); // 小明 is running...xiaoming.__proto__ === Student; // true
 
0 0