JavaScript的私有属性与链式调用

JavaScript在很多人眼里都觉得面向对象方面不完整,其实JS的基于原型的面向对象是很灵活和强大的。JS可以拥有私有属性。

不过很多JS新手都不知道该如何封装私有属性。下面请看代码:

JS的私有属性

#!/usr/bin/node

var Obj = {
  name: 'David',
  age: 31,
  Person: function() {
    return {
      getName: function() {
        console.log(Obj.name)
        return Obj.Person()
      },
      getAge: function() {
        console.log(Obj.age)
        return Obj.Person()
      }
    }
  }
}

var test = Obj.Person()

console.log(test)
console.log(test.name)
console.log(test.getName())
console.log(test.getName().getAge())

-> 输出
{ getName: [Function], getAge: [Function] }
undefined    -> 对应于test.name
David        -> 对应于test.getName()
David        -> 链式调用
31

下面关于私有属性封装可以归结为:构造两个嵌套对象,私有属性/方法放在外层,公有属性/方法放在内层。

至于链式调用,需要做的只是在方法内部返回对象自生的引用。

作者: YanWen

Web 开发者

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s