首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript实现私有属性

JavaScript被很多人认为并不是一种面向对象语言,原因有很多种,比如JavaScript没有类,不能提供传统的类式继承;再比如JavaScript不能实现信息的隐藏,不能实现私有成员。...本文并不是为了打破以上误解(实际上笔者自己也有困惑),只是简单介绍几种JavaScript实现私有属性的方式,以及各自的优劣。 1....而且也并没有实现私有属性,上述代码中的实例person可以直接访问到_name属性: alert(person._name); //'Joe' 2....属性,只能通过特权函数getName获取: alert(person...._name); // undefined alert(person.getName()); //'Joe' 使用闭包和特权函数实现私有属性的定义和访问是很多开发者采用的方式,Douglas Crockford

94050
您找到你想要的搜索结果了吗?
是的
没有找到

Python - 面向对象编程 - 公共属性、保护属性私有属性

公共属性 在 Python 的类里面,所有属性和方法默认都是公共的 class PoloBlog: # 公共属性 sum = 0 # 构造方法 def __init__...但Python也可以设置受保护、私有类型的变量or方法 私有类型的属性、方法 在实际开发中,对象的某些属性或方法可能只希望在对象的内部被使用,而不希望在外部被访问到 私有属性:就是对象不希望公开访问的属性...、私有方法,不允许在对象外部被使用 通过公共方法访问私有属性 person = Person("小菠萝", 24) person.printMsg() # 输出结果 name: 小菠萝 age:...伪私有属性私有方法 其实 Python 中,并没有真正意义上的私有,仍然可以在外部访问私有属性私有方法 因为,在给私有属性、方法命名时,实际是对名称做了一些特殊处理,使得外界无法访问到 处理方式:在名称前面加上...,和公共变量没有什么特别大的区别 总结 无论是受保护型变量还是私有变量,其实在外部还是能访问的,所以并不能真正控制属性的访问权限

2.1K20

前端开发:javascript对象中定义私有属性的另类方法

私有变量作用为了在对象创建过程中变量不会被外部访问,如果要访问只能通过属性或定义方法方式来实现。...在c#和Java中定义私有属性通过private关键词即可,那么在javascript中如何定义私有变量呢?下面就说一种比较另类的方法。...为什么这里说另类呢,有两点不同: 1、新创建对象的实例方法不引用 this 2、不使用 new 操作符调用构造函数。...下面直接上代码: function Person(name, age, job){ //创建要返回的对象 var o = new Object(); //可以在这里定义私有变量和函数 //添加方法...即使有其他代码会给这个对象添加方法或数据成员,也不可能有别的办法访问传入到构造函数中的原始数据。 此例仅为展示一些基本技巧,欢迎大家转发和关注。

1.3K20

iOS开发中访问并修改一个类的私有属性

某些类之所以有某些私有属性是因为不想这些属性被外界访问并修改。但我们仍能对私有属性进行访问和修改。访问以及修改私有属性有两种方式:KVC、runtime。...1.KVC 我们可以用setValue:的方法设置私有属性,并利用valueForKey:的方法访问私有属性。假设我们有一个类Person,并且这个类有一个私有属性name。...(@"=======%@", [ls valueForKey:@"name"]) 2.runtime 我们可以利用runtime获取某个类的所有属性私有属性、非私有属性),在获取到某个类的属性后就可以对该属性进行访问以及修改了...看代码: // 利用run time访问并修改私有属性 Person *p = [Person new]; // IVar是runtime声明的一个宏 unsigned int count =...(ivar); NSLog(@"%s",memberName); Ivar name = members[0]; // 修改属性值 object_setIvar(p, name, @"bushiwo

2.6K20

构建函数(class)创建对象,对象属性新增和修改

class:利用函数方法创建对象,也称构建传说创建对象; 构建函数创建对象 function byd(){             this.color='象牙白';             this.pinpai...            };             this.runy=function(){                 alert('避雨');             }         } 构造函数创建的对象的属性和方法修改...var bydcar=new byd();//创建一个对象bydcar,使用byd的属性 bydcar.color='黑耀黑';//修改属性 bydcar.run=function(){ alert(...'我很厉害')}//修改方法 构造函数创建的对象的属性和方法新增 bydcar.length='2米';//新增属性 byd.money=function(){ alert('客运赚钱'); }//新增方法...构建函数创建对象类似函数,内部的属性方法用分号分离,json创建的对象各类属性方法用逗号可开

1.2K20

【Golang语言社区】前端编程-javascript使用闭包模拟私有属性和方法

最近因为做了一个项目,其中涉及到了js私有方法,这个概念在其语言里面是很常见的,很多语言都有private这个关键字,只要在一个类的前面加上private就表示申明了一个私有方法,但是javascript...首先javascript里面有一个高级特性叫闭包,简单的说js的闭包可以理解成是一种现象或者特性,一般出现在两个函数嵌套的情况下,看例子: function a(){ var eg = 1; return...这里要说的私有方法其实和闭包是有关系的,私有方法在其他语言里面是不被访问到的,除非有专门的接口,js的局部作用域里面的东西在正常情况下也是不能被外部访问到,但是上面例子显示了,通过闭包的方式可以访问到,...其中auther属性和price属性可以直接通过对象访问,因为这些属性都是new的时候直接定义在返回的对象身上的,而page属性则没有,因此不能反回,但此时如果我想访问page属性,那就得依靠闭包了,返回的函数在外层的匿名函数里面...通过这种方式我们就把私有方法和公有方法区分开了。

78190

JavaScript函数(二) 函数内部三个不常见的属性

JavaScript函数(二) 函数内部三个不常见的属性 看红宝书+查资料,重新梳理JavaScript的知识。...arguments.callee arguments就不多说了,但是arguments有一个callee属性,是一个指向arguments对象所在函数的指针。...这里没有问题其实就是因为虽然函数名变化了,但是,递归的时候用的函数还是之前的函数。所以如果,我们修改factorial就会引发问题了。...length属性 函数的length属性指该函数期望传入的参数数量,即形参的个数。...我们再重新看下它的定义:函数的length属性指该函数期望传入的参数数量,即形参的个数。 所以说,形参的数量是不包括剩余参数个数,只包括第一个具有默认值之前的参数个数。

53420
领券