假设需实现构造函数Scope,它的特性如下:
var scopeA = new Scope();
scopeA.title = 'My title';
var scopeB = scopeA.$clone();
//实例有$clone方法用创建一个对象克隆,表现如下
console.log(scopeB.title === 'My title' ); //输出true
scopeA.title = 'Home title' ;
console.log(scopeB.title === 'Home title' );//输出true
//但是一旦scopeB主动修改它的属性,scopeA并不受影响
scopeB.title = 'scopeB title' ;
console.log(scopeA.title === 'Home title' )//输出true请实现满足这个条件构造函数Scope(只需实现上述描述要求即可)。
各位大神写下答案,顺便解释解释。
var Scope = function(){};
Scope.prototype.$clone = function(){
var f = function(){};//创建一个新的构造函数
f.prototype = this;//将它的原型指向 当前的这个Scope 实例
return new f();//返回 新创建的这个对象的实例
}
var scopeA = new Scope();
scopeA.title = 'My title';
var scopeB = scopeA.$clone();
//实例有$clone方法用创建一个对象克隆,表现如下
console.log(scopeB.title === 'My title' ); //输出true
scopeA.title = 'Home title' ;
console.log(scopeB.title === 'Home title' );//输出true
//但是一旦scopeB主动修改它的属性,scopeA并不受影响
scopeB.title = 'scopeB title' ;
console.log(scopeA.title === 'Home title' )//输出true
console.log(scopeB.title)//输出 scopeB title
var scopeB = scopeA.$clone();
当调用$clone时,scopeB的proto指向scopeA,,因此当scopeA修改时,scopeB的值也会变化
本文介绍如何使用JavaScript实现一个具有$clone方法的Scope构造函数。该方法能够创建一个对象的克隆,并确保原始对象与克隆对象之间的属性同步更新,直到克隆对象的属性被直接修改。
1153

被折叠的 条评论
为什么被折叠?



