来源:蜘蛛抓取(WebSpider)
时间:2017-04-30 06:46
标签:
可变对象和不可变对象
Javascript对象的私有属性 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 10时,
大家都知道Javascript函数对象的所有属性都是公开的,是没有私有属性这一个概念的.但是,不要忘记了Javascript的两大特性(原型和闭包).说到这里,可能很多朋友已经知道怎么样实现私有属性了.没错,我们就是要通过Javascript的闭包来实现.
概念性的东西可能比较难理解,我们还是以实例来说明:
代码片段(1)
1.&[图片] 6.jpg&&&&
开源中国-程序员在线工具:
开源从代码分享开始
kuky821的其它代码> js中定义对象的几种形式
js中定义对象的几种形式
jxfz889 & &
发布时间: & &
浏览:44 & &
回复:0 & &
悬赏:0.0希赛币
js中定义对象的几种方式
1. 基于已有对象扩充其对象和方法(只适合于临时的生成一个对象):
var obj = new Object();
obj.name="userObject";
obj.printName = function(name){
this.name =
alert(this.name);
obj.printName("newUserObject");
2.工厂方式创建对象(每次创建一个object后,其中对应的方法(本例中是get)也被创建一次,方法不能被所创建的所有对象(本例中是obj1和obj2)共享):
function createObject(){
var obj = new Object();
obj.name="userObject";
obj.password = "12345";
obj.get = function(){
alert(this.name + ", " + this.password);
var obj1 = createObject();
var obj2 = createObject();
obj1.get();
obj2.get();
b.带参数的构造方法:
function createObject(username,password){
var obj = new Object();
obj.username =
obj.password =
obj.get = function(){
alert(this.username + ", " + this.password);
var obj1 = createObject("zhangsan","123456");
obj1.get();
c.让函数被多个创建的对象所共享,而不是每一个对象都创建一个相同的函数(缺点:对象定义本身和方法分离了):
function get(){
alert(this.username + ", " + this.password);
function createObject(username,password){
var obj = new Object();
obj.username =
obj.password =
obj.get =
var obj1 = createObject("zhangsan","123456");
var obj2 = createObject("lisi","54321");
obj1.get();
obj2.get();
3.构造函数方式:
function Person(){
this.username = "zhangsan";
this.password = "123";
this.getInfo = function(){
alert(this.username + ", " + this.password);
var person = new Person();
person.getInfo();
b.可以在构造函数是传递参数:
function Person(username,password){
this.username =
this.password =
this.getInfo = function(){
alert(this.username + ", " + this.password);
var person = new Person("zhangsan","123");
person.getInfo();
4.使用原型(prototype)方式创建对象:
优点:创建的多个对象共享同一个方法(getInfo)
缺点:创建的多个对象在共享同一个方法的同时也共享了同样的属性(username,password),实际开发中这样儿是
不行的,必须是多个对象都要有自己的属性。
采用该方式创建对象通常是用来扩展已有对象的某一个方法。
function Person(){}
Person.prototype.username = "zhangsan";
Person.prototype.password = "123";
Person.prototype.getInfo = function(){
alert(this.username + ", " + this.password);
var person = new Person();
var person2 = new Person();
person.username = "lisi";
person.getInfo();
person2.getInfo();
b.如果使用原型方式创建对象,那么生成的所有对象将会共享原型中的属性,这样儿一个对象改变了该属性也会反应到其他的对象上:
function Person(){}
Person.prototype.username = new Array(0;
Person.prototype.password = "123";
Person.prototype.getInfo = function(){
alert(this.username + ", " + this.password);
var person = new Person();
var person2 = new Person();
person.username.push("zhangsan");
person.username.push("lisi");
person.password = "456";
person.getInfo();
person2.getInfo();
c.使用原型和构造函数方式来创建对象:
function Person(){
this.username = new Array();
this.password = "123"
Person.prototype.getInfo = function(){
alert(this.username + ", " + this.password);
var person = new Person();
var person2 = new Person();
person.username.push("zhangsan");
person.username.push("lisi");
person.getInfo();
person2.getInfo();
5.动态原型方式:在构造函数中通过标志量让所有对象共享一个方法,而每个对象拥有自己的属性。
function Persion(){
this.username = "zhangsan";
this.password = "123";
if(typeof Person.flag == "undefined"){
Person.prototype.getInfo = function(){
alert(this.username + ", " + this.password);
Person.flag =
var p = new Person();
var p2 = new Person();
p.getInfo();
p2.getInfo();
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&JS中的JSON对象
我的图书馆
JS中的JSON对象
JS中的JSON对象
TA的最新馆藏[转]&