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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions