不使用NEW运算符如何创建JS对象

  1. 利用字面量
var a = [], b = {}, c = /abc/g
  1. 利用dom api
var d = document.createElement('p')
  1. 利用JavaScript内置对象的api
var e = Object.create(null)
var f = Object.assign({k1:3, k2:8}, {k3: 9})
var g = JSON.parse('{}')

4.利用装箱转换

var h = Object(undefined)
var i = Object(null)
var k = Object(1)
var l = Object('abc')
var m = Object(true)

构造器函数实现数据私有

construct的执行过程如下:

  • 以 Object.protoype 为原型创建一个新对象
  • 以新对象为 this,执行函数的 call
  • 如果call 的返回值是对象,那么,返回这个对象,否则先创建一个新的对象

如果构造器返回了一个新对象,那么 new 创建的新对象就变成了一个构造函数之外完全无法访问的对象,即实现了私有

function f(){
 this.a = 1;
 return{
  getValue:()=>this.a;
 }
}

var o=new f;
o.getVaule(); //1

外部无法访问到变量a

你可能感兴趣的:(不使用NEW运算符如何创建JS对象)