您的位置:首页 > Web前端 > JavaScript

【JavaScript】prototype简单解释

2016-07-06 20:41 393 查看
prototype(原型)是javascript面向对象(Object Oriented,OO)思想的重要属性,也是初学时扰乱我很久的一个属性,到底prototype在js中有什么用呢?为什么说他是面向对象中重要的一环呢?

我的总结是:

1、加了prototype的方法,就是需要实例化之后才可以调用的方法(相当于java中的非静态方法,如get/set方法),从底层来讲,系统在该方法的类函数被实例化后才给其分配内存。

2、不加prototype的方法,即不需要实例化就可以调用。从底层来讲,宿主运行环境在js加载完成后就给该方法分配了内存。

3、总的来说,不加prototype效率更高,系统不需要自动回收内存;而加了prototype更加节约内存。

下面来看一个例子:

function main() {
var a = function () {
alert("c")
};
this.b = function () {
alert("b")
}
}
main.c=function () {
alert("c")
}
main.prototype.d=function () {
alert("d")
}
main.c();//输出c
//main.d();//报错,d is not a function
var m = new main();
//m.c(); //报错,c is not a function
m.d();//输出d

很明显,c方法直接被分配了内存,可直接通过main.c()调用(调用完后,c就会被回收,不会被其他对象所继承),相当于类main中的a方法;而d方法不能直接调用,只有在实例化了之后才可以调用:new main().d(),相当于main中的b方法(区别就是prototype不能再new对象的时候复制属性,节约了内存,也更加灵活)。

一些粗浅的个人理解,望更正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript prototype