javaScript中私有属性和方法

javaScript并没有特殊的语法来表示私有、保护、或公共属性和方法,在这一点上与

java或其他语言是不同的,JavaScript中所有对象的成员是公用的:

var myobj={

mypop:1,

getProp:function(){

return this.myprop;

}

};

console.log(myobj.myprop); // ‘myprop’是公有可访问的

console.log(myobj.getProp()); //getProp()也是公有的,可访问的

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

function Gadget(){

this.name=’iPod’;

this.stretch =function(){

return ‘iPad’;

};

}

var toy = new Gadget();

console.log(toy.name); //name是公有的

console.log(toy.stretch()); //stretch()是公有的

虽然javaScript语言中并没有用于私有成员的特殊语法,但是可以使用闭包来实现这种

功能。构造函数创建了一个闭包,而在闭包范围内部的任意变量都不会暴露给构造函数

以外的代码。然而,这些私有变量仍然可以用于公共方法中;即定义在构造函数中,且

作为返回对象的一个部分暴露给外部的方法。

如下面示例:

function Gadget(){

//私有变量

var name =’iPod’;

//公有函数

this.getName = function(){

return name;

} ;

}

var toy = new Gadget();

//name是undefined的,是私有的

console.log(toy.name);

//公有方法访问

console.log(toy.getName()); //输出Ipod

如上面例子,很容易在Javascript实现私有性。需要做的只是在函数中将需要保持为私有属性的数据包装起来,并确保它对函数来说是局部变量,这意味着外部函数不能访问它

时间: 2024-11-05 06:26:25

javaScript中私有属性和方法的相关文章

JavaScript基础对象创建模式之私有属性和方法(024)

JavaScript没有特殊的语法来表示对象的私有属性和方法,默认的情况下,所有的属性和方法都是公有的.如下面用字面声明的对象: var myobj = { myprop: 1, getProp: function () { return this.myprop; } }; console.log(myobj.myprop); // `myprop` is publicly accessible console.log(myobj.getProp()); // getProp() is publ

Javascript的私有变量和方法、共有变量和方法以及特权方法、构造器、静态共有属性和静态共有方法

一.私有变量:定义在函数内部的属性和方法称之为该函数的私有属性和方法        共有变量:在函数内部通过this创建的对象和方法称之为该函数的共有属性和方法 特权方法:通过this创建的既可以访问该函数的共有属性和方法,也可以访问该函数的私有属性和方法称之为特权方法 构造器:对象在创建的时候调用特权方法来初始化实例的属性,这个方法也称为构造器 /** * 类的内部私有属性.私有方法.特权方法.共有属性和共有方法以及构造器 * @param id * @param bookname * @pa

Java中子类继承了父类的私有属性及方法吗?

最近学习继承,从书中看到子类继承父类,子类拥有父类所有的属性和方法,于是使用程序去验证,发现父类的私有属性和私有方法,子类是不能访问的,当然一些父类的私有属性可能可以通过相应的方法访问到,但是私有的方法似乎不能简单的访问,这里暂不考虑Java反射机制,于是我分析,子类不能继承父类私有的属性及方法,但是分析了内存后,我发现我是错的,在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象.所以所谓的继承使子类拥有父类所有的属性和方法

javascript中数组常用的方法和属性

前言 在javascript中,数组是一种非常重要的数据类型,我们时常会和它打交道,最近在开发项目中频繁的使用到数组,但是自己对数组的众多方法已经是非常模糊了,为了方便自己以后能够更好的使用数组中的属性和方法,在此记录一下. 数组常用的属性和方法 常用属性 Array.length:返回数组的大小 常用方法 Array.pop():删除并返回数组的最后一个元素 Array.push():向数组的结尾添加元素 Array.shift():将元素移除数组 Array.unshift():向数组头部添

[转] JavaScript中的属性:如何遍历属性

在JavaScript中,遍历一个对象的属性往往没有在其他语言中遍历一个哈希(有些语言称为字典)的键那么简单.这主要有两个方面的原因:一个是,JavaScript中的对象通常都处在某个原型链中,它会从一个或多个的上层原型上继承一些属性.第二个原因是,JavaScript中的属性不光有值,它还有一些除了值以外的其他特性,其中一个影响属性遍历的特性就是[[Enumerable]],如果该值为true,则称这个属性是可枚举的,否则反之. 知道了这些,我们就可以把属性的遍历分为四种情况. 注:示例代码中

Javascript对象的属性及方法

以下注释中的说法相对于PHP等语言的类对象的属性及方法,因为Javascript首先没有“类”这一说法,也不存在静态非静态.属性/方法作用域这一说法. function obj() { var v = '';//私有静态属性 var f = function(){};//私有方法 } ------------------------------------ obj.v = '';//公共静态属性 obj.f = function(){};//公共静态方法 给类本身扩展属性和方法,只能通过类名访问

JavaScript原生对象属性和方法详解——Array对象 转载

length 设置或返回 数组中元素的数目. 注意:设置 length 属性可改变数组的大小.如果设置的值比其当前值小,数组将被截断,其尾部的元素将丢失.如果设置的值比它的当前值大,数组将增大,新的元素被添加到数组的尾部,它们的值为 undefined.所以length不一定代表数组的元素个数. var arr = new Array(3) arr[0] = "John" arr[1] = "Andy" arr[2] = "Wendy" cons

深入理解JavaScript中的属性和特性

深入理解JavaScript中的属性和特性? JavaScript中属性和特性是完全不同的两个概念,这里我将根据自己所学,来深入理解JavaScript中的属性和特性. 主要内容如下: 理解JavaScript中理解对象的本质.理解对象与类的关系.对象与引用类型的关系 对象属性如何进行分类 属性中特性的理解 第一部分:理解JavaScript中理解对象的本质.理解对象与类的关系.对象与引用类型的关系 对象的本质:ECMA-262把对象定义为:无序属性的集合,其属性可以包含基本值.对象或者函数.即

Jquery中$(document).ready() 和 JavaScript中的window.onload方法 比较

Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 2.编写个数不同 window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个(最后一个)