JavaScript 面向对象:私有方法、公有方法与特权方法的实现与区别

作者:纸飞机时间:2026-10-26 18:42:19浏览:489

本文深入解析JavaScript中类的三种核心方法:私有方法、公有方法与特权方法。通过具体代码示例,阐述私有方法仅限内部访问、公有方法通过prototype共享且无法访问私有属性、特权方法利用闭包在外部可调用的特性。文章结合实例演示了各方法的定义方式、调用限制及适用场景,帮助开发者掌握JavaScript面向对象编程中的访问控制机制。

私有方法的定义与限制

私有方法能够访问类内部的所有属性,包括私有属性和公有属性。然而,私有方法无法在类的外部被直接调用。



私有方法的定义方式如下所示。


具体实现代码如下:

 
function myClass () {
var private_attribute = initial_value;
function private_method () { }
var private_method2 = function () { }
} 

在下面的示例中,showpet() 被定义为一个私有方法。



相关代码示例如下:

 
var pet=function(){ var temp="" //私有变量只有在函数或者对象作用域范围内能访问
function showpet(){
alert("123")
} 
showpet();//私有方法可以在函数作用域范围内使用。
} 
showpet();//会出错
pet.showpet()//还是不能这样调用
var Penguin=new pet() //实例化一个pet对象
Penguin.showpet()//不好意思这样子还是不能让你调用。


公有方法的实现方式

接下来介绍公有方法。



1.公有方法允许在类的外部进行调用,



2.但它无法访问类的私有属性。



3.公有方法必须在类的内部定义,或者通过类的prototype属性在外部添加。



公有方法的定义格式如下。



参考代码如下:

 
function myClass () {
this.public_attribute = initial_value;
this.prototype.public_method = function () { }
} 
myClass.prototype.public_attribute2 = initial_value;
myClass.prototype.public_method2 = function () { }

具体应用实例如下。


代码如下:

 
var pet=function(){
function showname(){//私有方法
alert(this.name)
} 
this.show=function(){ //如果这里不理解,请注意这个方法下面就要介绍了。
showname();
  } 
} 
pet.prototype.setname=function(str){
name=str;
} 
var Penguin=new pet()
Penguin.setname("Penguin");//添加实例的name值为Penguin
Penguin.show(); //弹出Penguin
Penguin.setname("wind");//添加实例的name值为wind
Penguin.show(); //弹出wind


特权方法的作用机制

最后介绍特权方法。



1.特权方法可以在类的外部被调用,



2.它可以访问类的私有属性,同时也可以访问类的公有属性,可以将其视为一种特殊的公有方法。



3.与前述公有方法不同,特权方法的声明和定义必须在类的内部进行。



特权方法的定义格式如下。


代码如下:

 
function myClass () {
this.privileged_method = function () { }
} 

具体应用实例如下。


代码如下:

 
var pet=function(){
function showname(){//私有方法
alert(this.name)
} 
this.show=function(){//通过使用this关键字定义一个特权方法。
showname(); //在特权方法中访问私有方法;
} 
} 
pet.prototype.setname=function(str){
name=str;
} 
var Penguin=new pet();//实例化一个pet对象
Penguin.setname("Penguin");//调用公有方法修改
Penguin.show(); //调用特权方法访问私有方法,弹出name


三种方法的综合理解

基于上述内容,结合相关书籍的理解,对公有、私有及特权方法总结如下:


公有方法:所有通过该类实例化出的对象共同拥有或可使用的方法。通常将共用方法放置在“原型对象”中,若放在构造函数中会导致方法重复创建。



私有方法:无法在外部进行调用。


特权方法:利用闭包原理,即通过作用域链,使内部函数能够访问外部函数的变量对象(即该类的私有变量、私有方法)。(关于作用域链、闭包、变量对象的概念,详见《Javascript高级程序设计》一书。)

作者最新文章