js对象构造函数用法

如何写一个js对象构造函数,首先得明白prototype和new这两个是什么意思,做啥的。prototype 属性使你有能力向对象添加属性和方法;而new是创建object + this指向object + __proto__指向,具体的解释可以点开网页看。

    


如果想了解更多的的js对象封装的方法,大家可以看这篇 博客,针对博客后面写的 类jQuery 封装的js代码,我自己的理解

var Person = (function(window) {
        var Person = function(name) {
            return new Person.fn.init(name);//new个对象初始化
        }

        Person.fn = Person.prototype = {
            constructor: Person,
            init: function(name) {
                this.name = name;
                this.sayHello = function() {
                    this.makeArray();//this指向init函数,相当于init.makeArray();
                }
            },
            makeArray: function() {
                console.log(this.name);
            }
        }

		/*虽然把makeArray 等常用方法挂载到 Person.prorotype 下面,但还是会被 init 这个实例使用.
		执行这行代码后,init.prototype就会具有makeArray的方法,int就可以调用makeArray方法,否则就会报错.
		大家可以试着去掉Person.fn.init.prototype = Person.fn代码看看会怎么样
		*/
       Person.fn.init.prototype = Person.fn;

        return Person;
    })();//闭包函数
	 var p = Person('pawn');//无需 new 
    console.log(p);//返回int()对象
    p.sayHello();//执行int.sayHello()




你可能感兴趣的:(js)