定义一个js类
var jsclass={
funA:function(){},
funB:function(){},
type:'class'
}
调用
var t=new jsclass()
t.funA()
百度到的很多内容都是类似这样的:
然后就很少有然后了,今天突然看到静态方法与实例方法这个词之后,于是有了这篇文章,让我们看看还有什么其他不同。
上边提到静态方法是直接通过属性添加的方法,实例方法是添加给实例化对象的方法。
不难看出,静态方法中的this指向的是构造函数本身,而实例方法中的this指向的是实例化对象。
这里要表达的是实例方法不能通过构造函数直接调用,而静态方法也不能通过实例调用。定义在构造函数内部的形式也是实例方法,表现与原型链添加的方式一致,但并不推荐这种写法。
此外如果是通过原型链进行的继承,那么也不会继承静态方法
有说法静态方法和实例方法对内存的分配也不同,如果实例方法是通过原型链添加的话,我觉得没啥不同(手动狗头)。还望指教。
①首先需要在内存中创建一个空对象,{}这种语法被称为字面量表示法,通过这种语法,浏览器在内存中创建一个对象。②然后将等价于new关键字(在功能上等价)的函数ObjectFactory第一个参数作为实例对象的构造函数,简历索引关系。
③通过__proto__建立实例对象与原型对象的联系。
④将构造函数的属性方法创建一份副本并挂载到实例对象上,最后返回实例化完成的对象。