//1.先有对象后有属性varo ={}//可以通过以下方式给对象添加属性o.name ='名称'; o['a'] ='另一个属性'//属性的值也可以是函数o.method =function(){};//2.对象和属性同时存在varo ={'name':'名称','a':'另一个属性','method': function(){ } }//对于这种方式,属性最好加上引号//3.通过函数new一个对象function(name){this.name =name }
静态属性
/*在java中,通过【类名.属性】调用的方式,成为静态属性,也叫类属性。当然也可以 通过实例来调用,但是编译器会发出警告。在js中,我们把一个函数叫做一个类。这个函 数名第一个字母通常大写(大写非必须)*/function Person(){ }//静态属性Person.a ='ws';//但是这个属性不可以通过实例调用varp =newPerson(); p.a;//undefined
私有属性
/*在js中,没有私有的概念。但是,可以通过闭包(局部变量)来实现*/function Person (){varname ='起个名吧';this.getName =function(){returnname; }this.setName =function(newName){ name=newName; } }varp =newPerson(); p.getName(); p.setName('张飞'); p.getName();//张飞/*像这样的,就只能通过getName、setName来读取写入属性name,可以对 name写入的值进行控制。但是,如果name是一个对象的话,外部代码就可以修 改它的值了*///当属性方法返回的是一个对象function Person(){varinfo = {name:'未初始化'}this.getInfo =function(){returninfo; } }varp =newPerson();varpInfo = p.getInfo();//{ name="未初始化"}pInfo.age=32;//不小心修改了p对象的信息p.getInfo();//{ name="未初始化", age=32}。对象被改变了。/*针对这种情况,由于外部只是读操作,所以,我们可以返回一个副本。这样就不用 担心内部对象被修改了*/function Person(){varinfo = {name:'未初始化'}this.getInfo =function(){//如果info有多个属性,可以用for in循环遍历return{name: info.name}; } }
盖楼回复 X
(您的评论需要经过审核才能显示)