前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js中Object类型的一些特点

js中Object类型的一些特点

作者头像
风柏杨4711
发布2021-03-15 10:51:46
9550
发布2021-03-15 10:51:46
举报
文章被收录于专栏:技术小牛技术小牛

在javascript中,可以通过构造方法和对象字面量的方式定义对象。

前者通过实例化一个对象,再在这个对象的基础上添加属性和方法,如:

代码语言:javascript
复制
var person = new Object();
person.name = "lee";
person.callName = function(){
   alert(this.name);
}

这种方法简单,直接,但感觉也太随意了,当需要定义大量的属性或方法时,会给人一种凌乱不堪的感觉。

我自己就更偏向于以对象字面量的方式来定义,如上面这个例子,可以这样写:

代码语言:javascript
复制
var person = {
    name:"lee",
    callName:function(){
        alert(this.name);
    }
}

这种方式看起来非常清晰,一目了然。我觉得非常好,另外,很多优秀的框架利用JS对象的这个特性来实现可选参数机制,特别是一个函数带有大量的可选方法时,将可选参数以一个对象字面量的形式传入,再在函数里面作处理,是非常好的选择。下面是一个关于可选参数的例子:

代码语言:javascript
复制
function greeting(lastName,option){
    var words = option.words || "Good morning!";
    var prefix = option.prefix || "Mr";
    alert(prefix+lastName+" "+words);
}
greeting("lee",{});//Mr lee,Good morning
greeting("lee",{prefix:'Miss'});//Miss lee,Good morning
greeting("lee",{words:'Good afternoon',prefix:'Miss'});//Miss lee,Good afternoon

另外,关于取对象属性的问题,也有个地方值得一提。

取一个对象的某个属性,有两个方法:一是最常见的用点号(.)来取,如person.name,就是取对象person的name属性;其实还有另一种方法,就是用中括号([])来取,如取前面所述的person.name,也可以写作person["name"],当然,这样写不符合其它OOP语言的习惯,所以这种写法也并没有多少人喜欢用,但值得注意的是,当属性名是变量的时候,点号取属性值法不能或者说只能通过一些HACK来取相应的属性值,而中括号法则能很直观,简单地实现。如:

代码语言:javascript
复制
var person = {
    name:'waitat'
};
//点号法
var attributeName = "name";
alert(person.attributeName);//undefined
alert(person[attributeName]);//waitat

看到了吗?这就是差距了。呵呵

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-04-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档