JS 对象复制Object.assign和Object.create

来源:互联网 发布:计算机二级c语言好考吗 编辑:程序博客网 时间:2024/06/06 01:42

Object.create

简介

创建一个拥有指定原型和若干指定属性的对象。多用于对象继承。

语法

Object.create(prototype,[proptertiesObject])

参数

  1. 第一个参数 一个对象,最为新创建对象的原型或者为null;
  2. 可选,该参数的对象拥有一组属性和值,改对象的属性名称和值将会复制给新创建的对象,只有该对象自身拥有的可枚举属性才有效,也就是说该对象的原型链上的属性不会复制给新创建的对象。

抛出异常

如果该对象的第一个参数不是不是一个对象或者null,将会抛出一个TypeError异常。

示例1

function Fn(){    var a = 3;    var b = 4;    this.c = 5;    this.b = 6;}Fn.prototype.log1 = function(){    console.log(this.a,this.b);}Fn.prototype.log2 = function(){    console.log(this.c,this.b);}function Fn1(){    Fn.call(this); //访问构造函数}//继承 Fn 的原型链,Fn相当于Fn1的父类了Fn1.prototype = Object.create(Fn.prototype);var fn1 = new Fn1();fn1 instanceof Fn //truefn1 instanceof Fn1 //ture// a 和 b,没有挂载到fn的原型链上,所以无法访问// a 和 b,相当于是 fn 函数作用域下的局部变量,外部无法访问。fn.log1(); //undefined undefinedfn1.log1(); //undefined undefined// b 和 c,挂载到了fn的原型链上,所以可以用this访问fn.log2(); // 5 6fn1.log2();// 5 6
0 0