Skip to content

如何实现一个私有变量, 用 getName 方法可以访问, 不能直接访问 #30

@Hongbusi

Description

@Hongbusi

通过函数的创建形式:

function People() {
  var name= 'Hongbusi'  
  this.getName=function() {
    return name;
  }
}
const people = new People()
console.log(people.name)
console.log(people.getName())

另外在这里讲一下网上一种错误的实现方案,通过配置 defineProperty 的不可枚举,不可修改:

const user = {
  name: 'Hongbusi',
  getName: function() {
    return this.name
  }
}

Object.defineProperty(user, 'name', {
  // 不可枚举不可配置
})

配置不可枚举只是让某个属性不能通过 for..inObject.keys() 的方式遍历出来,直接 user.name 一样还是可以访问到这个属性。

Metadata

Metadata

Assignees

No one assigned

    Labels

    JSjavascript

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions