当前位置: 移动技术网 > IT编程>开发语言>JavaScript > JavaScript原型

JavaScript原型

2019年01月30日  | 移动技术网IT编程  | 我要评论

js原型

       js每声明一个function,都有prototype原型,prototype原型是函数的一个默认属性,在函数的创建过程中由js编译器自动添加。
也就是说:当生产一个function对象的时候,就有一个原型prototype。
例如:
prototype的属性值是一个对象,是属性的集合,是属性的集合,是属性的集合
例如:
function person(name,age){
    this.name=name;
    this.age=age;
}
    person.prototype.sayhello=function(){
    alert("使用原型得到name:"+this.name);
}
var per=new person("alin",21);
per.sayhello(); //输出:使用原型得到name:alin 

在函数person里面自定义了属性name和age,而prototype是我们的属性集合,也就是说,我要添加sayhello这个属性到person,则要这样写:person.prototype.sayhello,就能添加person的属性。

(我们可以简单的把prototype看做是一个模板,新创建的自定义对象都是这个模板prototype的一个拷贝,其实准确来说,不应该说是一个拷贝,而是一个连接,只不过这种链接是不可见,新实例化的对象内部有一个看不见的_proto_指针,指向原型对象)

 

使用原型来优化代码:

普通code:

function add(x,y){
   return x+y;
}
function subtract(x,y){
   return x-y;
}
console.log(add(1,3));

使用原型优化后的两种代码:

第一种:

var calculator = function(){
  
};
calculator.prototype = {
    add:function(x,y){
     return x+y;
},
subtract:function(x,y){
     return x-y;
}
};

第二种:

var calculator = function () {};
calculator.prototype = function(){
   add = function(x,y){
   return x+y;
},
subtract = function(x,y){
    return x-y;
}
return{
     add:add,
     subtract:subtract
}
}();
 
console.log((new calculator()).add(1,3));

目的:封装私有的function,通过return的形式暴露出简单的使用名称,以达到public/private的效果。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网