js私有属性和方法

转载 (原文地址) pingfan 随笔 js 1007阅读 2014-08-30 22:28:48 举报

javascript并没有特殊的语法来表示私有、保护、或公共属性和方法。在这一点上写java或其他语言是不同的。javascript中所有对象的成员都是公共的:

[code] var myobj={
myprop:1,
getProp:function(){
return this.myprop;
}
}
console.log(myobj.myprop); //myprop 是公有可访问的
console.log(myobj.getProp()); //getProp()也是公有可访问的[/code]

当使用构造函数创建对象时也同样如此,即所有的成员仍然都是公共的

[code] function Gadget(){
this.name='ipod';
this.stretch=function(){
return 'ipad';
}
}

var toy=new Gadget();
console.log(toy.name);     //name是共有的
console.log(toy.stretch()); //strech()是共有的[/code]

私有成员
虽然javascript语言并没有用于私有成员的特色语法,但是可以使用闭包来,实现这种功能。构造函数创建了一个闭包来实现这种功能。构造函数创建了一个闭包,而在闭包范围内部任意变量都不会暴露在构造函数以外的代码。然而,这些私有变量仍然可以用于公共方法中:即定义在构造函数中,且作为返回对象的一个部分暴露给外部的方法。让我们来分析一下例子,其中那么一个私有成员,在构造函数外部都是不可以访问的。

[code]function Gadget(){
    //私有成员
    var name='ipod',

    //公共函数
    this.getName=function(){

    }
}

     var toy=new Gedget();
        //name是undefined
        console.log(top.name) //输出undefined

        //公有方法访问name
        console.log(toy.getName()); 

        //何况你已经是老板;了[/code]

正如所看到的,很容易在javascript实现私有性,需要做的只是在函数中将需要保持为私有属性的数据包装起来,并确保他对函数来说是局部变量,这意味着外部函数不能访问他。
评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复