`

JS中对象中的公有方法、私有方法、特权方法

 
阅读更多

了解如何创建一个对象的时候,我们就需要给这个对象增加方法和属性。

在其他的书籍教程中,我们经常看到各种名称的方法,例如静态方法、实例方法等等,开始我查阅的时候就被这些说法搞的稀里糊涂的,于是自己总结了下,若有错误,还请指出。

1、静态方法和属性
静态方法既只允许父类调用,其他的实例均无法访问和调用的方法和属性。

var user = function(age){
    // 变量age 是user对象的私有属性
    var age = age;
}
 
// user.age 是user对象的静态方法
user.age = function(){
    return this.age;
}
 
// 当我们将user对象实例化的时候
// zhangsan 无法使用 user 对象中
// 的 age方法
var zhangsan = new user(18);
 
// 实例中没有继承user对象的age方法
alert(!!zhangsan.age == false);

2、公共方法
公共方法既依此父类生成的所有实例均可以使用的方法。

var user = function(name,age){
    // 公共变量
    this.name = name;
    this.age = age;
}
 
// 公共方法
user.prototype = {
    getInfo: function(){
        return "他的名字叫:" +this.name+ ",他的年龄是:" +this.age;
    }
}
 
// 当我们将user对象实例化的时候
var zhangsan = new user("zhangsan",18);
 
// getInfo() 就是user对象的公共方法 name\age 既user对象的公共变量
alert(zhangsan.getInfo() == "他的名字叫:zhangsan,他的年龄是:18");
alert(zhangsan.name == "zhangsan");
alert(zhangsan.age == 18);

3、私有方法
私有方法是只有父类可以访问的方法和属性,他与静态方法一致,只是表现形式不一样。构造器中的var变量和参数都是私有方法。

var user = function(age){
    // age 是user对象的私有属性
    var age = age;
 
    // getAget 是user对象的私有方法
    function getAge(){
        return age;
    }
}
 
var zhangsan = new user(18);
 
// 实例中不包含user对象的age属性
// 及getAge方法;
alert(zhangsan.age == undefined);
alert(zhangsan.getAge == undefined);

4、特权方法
当父类中的某一个公共方法可获取父类中的私有方法,同时我们无法修改该方法(可以删除、替换),我们称这种方法为特权方法。
可以访问私有方法,并且在公共域中可见的方法称为特权方法。特权方法不可被修改,只能替换或者删除。

var user = function(age){
    // age 是user对象的私有属性
    var age = age;
 
    // 创建一个特权方法用来获取
    // user 对象下的私有属性age
    this.getInfo = function(){
       return age;
    }
}
 
var zhangsan = new user(18);
alert(zhangsan.getInfo() == 18);

参考资料:http://javascript.crockford.com/private.html

分享到:
评论

相关推荐

    js基础知识(公有方法、私有方法、特权方法)

    特权方法是公有方法中的一种特殊情况,它可以访问对象的私有变量和方法。特权方法通常用于在私有方法中实现一些公共接口,以供外部调用。特权方法的创建方式与公有方法类似,但在其内部可以访问私有变量或方法,例如...

    Javascript 构造函数,公有,私有特权和静态成员定义方法

    本文将详细解释JavaScript中构造函数中公有、私有特权成员以及静态成员的定义和使用方法。 构造函数中的成员可以被分为公有成员和私有成员。公有成员指的是那些可以被对象外部访问的属性和方法,而私有成员则是只能...

    js面向对象之公有、私有、静态属性和方法详解

    在JavaScript面向对象编程中,理解公有属性、私有属性、静态属性以及相应的方法是非常重要的。这些概念有助于我们更好地组织和封装代码,实现更高效的代码复用以及更严格的访问控制。 公有属性和公有方法 公有属性...

    JS特权方法定义作用以及与公有方法的区别

    JS特权方法是一种特殊的构造函数方法,它通过使用this关键字在构造函数内部进行定义。这种做法使得特权方法可以被实例化的对象继承,并且可以在对象外部被调用。但是,值得注意的是,特权方法只能由通过该构造函数...

    JavaScript中的公有、私有、特权和静态成员用法分析

    在JavaScript编程语言中,公有、私有、特权和静态成员的使用是面向对象编程范式的一部分。它们各自有不同的作用域和访问方式,为对象的设计和行为提供了多样化的手段。下面,我们将详细分析这些成员的不同特点和使用...

    Javascript 面向对象(一)(共有方法,私有方法,特权方法)

    私有方法:私有方法本身是可以访问类内部的所有属性的,即私有属性和公有属性。但是私有方法是不可以在类的外部被调用。 私有方法写法: 代码如下: function myClass () { var private_attribute = initial_value; ...

    JavaScript中的私有成员

    由于公有方法无法直接访问私有变量和函数,因此需要特权方法作为桥梁。特权方法既可以从内部访问私有成员,又可以在外部调用: ```javascript function Container(param) { var secret = 3; function dec() { /...

    Javascript之面向对象--方法

    在JavaScript中,面向对象编程是一种常用的设计模式,它允许我们创建具有属性和方法的对象。...理解对象方法、私有方法、静态方法、公有方法以及特权方法的概念,有助于提升JavaScript编程的技能和效率。

    JavaScript之信息的封装 js对象入门

    在JavaScript中,私有属性和方法通常是通过函数作用域来实现的,即在函数内部定义的变量和方法,外部是无法直接访问的。 作用域是JavaScript编程中的一个基本概念,它决定了变量和函数的可访问范围。在JavaScript中...

    JavaScript中的面向对象介绍

    在其它面向对象语言中对象是由类的实例化而来,JavaScript是基于原型的面向对象语言,没有类的概念,对象派生自现有对象的副本对象创建对象构造函数公有、私有、特权、静态成员this、call和apply异常处理继承原型...

    一个简单的javascript类定义例子

    在给定的例子中,我们看到一个名为`JsClass`的函数被用作一个类的定义,它展示了如何定义公有成员、私有成员以及特权方法。接下来,我们将深入探讨这些概念。 **公有成员**:在JavaScript中,类的公有成员可以通过...

    JavaScript私有变量实例详解

    JavaScript私有变量是编程中一种重要的概念,它允许我们在函数或对象中定义变量,但限制了这些变量在函数或对象外部的访问...在实际开发中,合理地运用私有变量和特权方法可以有效控制对象的状态,避免不必要的副作用。

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part1.rar

     2.2.4 公有、私有、特权和静态成员真那么重要吗   2.2.5 对象字面量   2.3 this是什么   2.4 try{}、catch{}和异常处理   2.5 实例:你自己的调试日志   2.5.1 为什么需要JavaScript日志对象   ...

    JS匿名函数类生成方式实例分析

    标题《JS匿名函数类生成方式实例分析》和描述《主要介绍了JS匿名函数类生成方式,结合实例形式分析了javascript匿名函数类相关属性与方法定义与使用技巧,需要的朋友可以参考下》共同指向了在JavaScript中利用匿名函数...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part3.rar

     2.2.4 公有、私有、特权和静态成员真那么重要吗   2.2.5 对象字面量   2.3 this是什么   2.4 try{}、catch{}和异常处理   2.5 实例:你自己的调试日志   2.5.1 为什么需要JavaScript日志对象   ...

Global site tag (gtag.js) - Google Analytics