javascript 对象、实例、函数、方法的区别

JavaScript021

javascript 对象、实例、函数、方法的区别,第1张

1楼说的没错。没必要区分很清楚。给一个小模型给你看看。

定义一个js类

var jsclass={

funA:function(){},

funB:function(){},

type:'class'

}

调用

var t=new jsclass()

t.funA()

百度到的很多内容都是类似这样的:

然后就很少有然后了,今天突然看到静态方法与实例方法这个词之后,于是有了这篇文章,让我们看看还有什么其他不同。

上边提到静态方法是直接通过属性添加的方法,实例方法是添加给实例化对象的方法。

不难看出,静态方法中的this指向的是构造函数本身,而实例方法中的this指向的是实例化对象。

这里要表达的是实例方法不能通过构造函数直接调用,而静态方法也不能通过实例调用。定义在构造函数内部的形式也是实例方法,表现与原型链添加的方式一致,但并不推荐这种写法。

此外如果是通过原型链进行的继承,那么也不会继承静态方法

有说法静态方法和实例方法对内存的分配也不同,如果实例方法是通过原型链添加的话,我觉得没啥不同(手动狗头)。还望指教。

①首先需要在内存中创建一个空对象,{}这种语法被称为字面量表示法,通过这种语法,浏览器在内存中创建一个对象。

②然后将等价于new关键字(在功能上等价)的函数ObjectFactory第一个参数作为实例对象的构造函数,简历索引关系。

③通过__proto__建立实例对象与原型对象的联系。

④将构造函数的属性方法创建一份副本并挂载到实例对象上,最后返回实例化完成的对象。