js基本知识(公共方法、私有方法、特权方法)
本文的主题虽然很基本,但在许多人看来似乎是一个小技巧,但它是Javascript基本知识中的一个综合主题,它涉及到对象属性、原型、构造函数、闭包以及表达式的立即执行的封装。公共方法
公共方法是可以从外部访问和调用的方法。
在对象
var餐厅= {
名称:'mcdonald,
公共方法
getName:函数(){
返回this.name;
}
}
在构造函数中
功能人(姓名,年龄){
this.name =名称;
this.age =年龄;
公共方法
this.getname =函数(){
返回this.name;
}
}
在原型中
person.prototype.getage =函数(){
返回this.age;
}
私有方法和特权
这两种方法通常一起讨论。原因是特权方法定义是访问内部私有属性和私有方法的公共方法的正确方式,而私有方法是指外部是不可见的,不可测的方式。
定义对象有两种方式。一种是使用对象实例化或对象表达式,另一种方法是使用构造函数,用不同的方法定义私有和特权方法也是不同的。
在对象
这里我们创建一个对象,通过对象的表达和添加方法的一些性质,然后把它在一个静态方法,对象的私有数据放在一个匿名函数直接执行表达式(生活),这个函数只存在在电话的瞬间,立即销毁的时候执行。
在对象中创建私有数据的方式称为对象模式的模块模式(创建对象的模式),其基本格式如下所示:
无功你的目的=(函数(){()
私有属性和方法
返回{
公共方法和属性
}
});
在模块模式中,返回的对象文本只包含可以公开的属性和方法。
var =(函数(){())
私有财产
无功_total = 10;
私有方法
无功_buyfood =函数(){()
_total --;
};
无功_gettotal =函数(){()
返回_total;
}
返回{
名称:'mcdonald,
_gettotal getTotal,
采购:_buyfood
}
});
restaurant.buy();
console.log(餐厅的名字); / / 'mcdonald
Console.log((餐厅。getTotal)); / / 9
注意,我们使用闭包间接地使用内部私有变量,并初始化餐厅(餐厅)名称(名称)。
在构造函数
在上面引入的模块模式用于创建私有方法时,公共方法和特权方法之间没有本质区别。原因是这个概念来自于使用构造函数创建私有数据时的定义。
在构造函数中定义私有属性和方法是很方便的,在调用时我们不需要使用闭包来初始化数据。
功能餐厅(名称){
私有财产
无功_total = 10;
公共属性
this.name =名称;
私有方法
功能_buyfood(){
_total --;
}
特权方法
this.buy =函数(){
_buyfood();
}
this.gettotal =函数(){
返回_total;
}
}
注意这里 / /公共方法,不能访问私有成员_total
restaurant.prototype.getname =函数(){
console.log(_total); / /捕获的referenceerror:_total未定义
返回this.name;
}
VaR麦当劳=新餐厅('mcdonald);
Console.log((麦当劳。getName)); / / 'mcdonald
mcdonald.buy();
Console.log((麦当劳。getTotal)); / / 9
更灵活,更灵活的方式。
采用模块化的方式,我们可以叫它多次破坏它每次完成。使用构造函数可以把一些初始化的数据,但在公共方法不能访问公共财产的私有成员,如果有很多方法需要访问私有数据,我们使用的方法来写的特权,最后会有很多的方法是不需要给每个实例。因此,两者的结合可以互补,两者的结合是很简单的。
var =(函数(){())
私有财产
无功_total = 10;
私有方法
功能_buyfood(){
_total --;
}
构造函数
功能餐厅(名称){
this.name =名称;
this.gettotal =函数(){
返回_total;
}
}
restaurant.prototype.buy =函数(){
console.log(_total); / / 10
_buyfood();
}
restaurant.prototype.getname =函数(){
返回this.name;
}
返回餐厅;
});
VaR麦当劳=新餐厅('mcdonald);
Console.log((麦当劳。getName)); / / 'mcdonald
mcdonald.buy();
Console.log((麦当劳。getTotal)); / / 9
以上就是本文的全部内容。萧边只是总结了一小部分,还有很多的知识点,没有提到。你可以自己去探索它。希望这篇文章能对初学者有所帮助。