#构造函数
构造函数的特点

特点就是每个方法都要在每个实例上重新创建一遍。因为在javascript中,对象是按引用传值的,如果包含一些属性作为默认值,它会被所有实例共享。


构造函数的成员

私有和特权成员在函数的内部,在构造函数创建的每个实例中都会包含同样的私有和特权成员的副本,因而实例越多占用的内存越多.我们必须很清楚js中公有、私有、静态属性和方法的应用区别;这时我就会通过具体的应用场景来理解。


构造函数的属性

A.prototype属性是在构造函数上(可以理解成是构造函数的的静态属性),所以实例化的对象没有prototype的属性;所以就有了在javascript中,对象实例并没有原型。


B.用对象字面量来写对象的时候.因为属性就是静态变量,即不需要new;


C.在jquery设计中,静态与实例方法共享设计;用构造函数jQuery()的原型对象覆盖了构造函数jQuery.fn.init()的原型对象,这样构造函数jQuery.fn.init()的实例也可以访问构造函数JQuery()的原型方法和属性.

var $$ = jQuery =  function(selector) {
    return  new  jQuery.fn.init(selector);
}
jQuery.fn = jQuery.prototype ={
    name:"meihong",
    init:function(selector) {
        this.selector = selector;
        return this
    },
    constructor:jQuery
}
jQuery.prototype.init.prototype = jQuery.fn;
jQuery.fn.sayName = function() {
    return this.name;
}
console.log($$('#hellocan').sayName());

这里的ajQuery.prototype相等于一个以对象字面量形式创建新的对象,虽然结果相同,但constructor指向了Object对象,其proto指向Object对象。可通过设置constructor属性,确保该属性能够访问到适当的值。

如何将消耗内存与线程结合?