原型模式(Prototype Pattern)不是指的 JS 的原型,它是 clone 自己,生成一个新对象的操作。因为 new 一个新对象的时候开销会比较大,或者由于其他原因不合适,所以采用这种方式创建一个一模一样的对象。
Java 默认有 clone 接口,不用自己实现。JS 中有一个比较像的实现就是 Object.create 方法。
// 一个对象(作为原型)
const prototype = {
getName: function() {
return this.first + '' + this.last;
},
say: function() {
console.log('hello world');
}
}
// 基于原型创建 x
let x = Object.create(prototype);
x.first = 'A';
x.last = 'B';
console.log(x.getName());
x.say();
// 基于原型创建 y
let y = Object.create(prototype);
y.first = 'C';
y.last = 'D';
console.log(y.getName());
y.say();
//函数是一种对象
function Person() {}
console.log(Person instanceof Object);
//对象都是通过函数创建的
let p1=new Person();
let obj1={name: 'zfpx'}
let obj=new Object();
obj2.name='zfpx';
let sum = new Function('a','b','return a+b');
console.log(Object instanceof Function);
console.log(Function instanceof Object);
console.log(Function instanceof Function);
function Foo(){
this.a = 10;
}
Foo.prototype.b = 20;
let f1 = new Foo();
console.log(f1.a);
console.log(f1.b);
let obj = {};
console.log(obj.toString());
let arr = [1,2,3];
// Array继承Object
// Array原型上的的方法对Object原型上的方法进行了重写
console.log(arr.toString());
// Object原型上的方法
console.log(Object.prototype.toString.call(arr));
Document
页面更新:2024-05-27
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号