ecma6阻止访问整个实例

时间:2015-09-18 10:36:33

标签: javascript node.js class ecmascript-6

您好我有以下课程定义:

'use strict'


class Human {
  constructor(name, age) {
    this._name = name || null;
    this.age = age || 'no age defined';
    this.rights = ['Human Rights'];
  }

  get this() {
    return 'access denied';
  }

  set name(name) {
    this._name = this._name ? this._name : name;
  }

  get name() {
    return this._name;
  }
}

let me = new Human();

console.log(me); // this should return a string "access denied"

我认为可以为整个实例定义一个getter。但这不是,或者? 有谁知道这件事吗?或者是否有其他方法来创建受限制的类?

亲切的问候 马丁

1 个答案:

答案 0 :(得分:0)

不,但你可以做的是在模块中放入一些代码,只导出部分代码。

 // human.js                                                     
 class SecretHuman {                                            
   constructor(name) {                                          
     this.name = name;                                          
   }                                                            
 }                                                              
 let human = new SecretHuman('Bob');                            
 export class Human {                                           
   secret() {                                                   
     console.log(`Secret human is ${human.name}`);              
   }                                                            
 }                                                              

// test.js 
import {Human} from './human';
new Human().secret();