javascript - 网易web前端校招面试题的问题?
黄舟
黄舟 2017-04-10 15:51:59
[JavaScript讨论组]

假设需实现构造函数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(只需实现上述描述要求即可)。

各位大神写下答案,顺便解释解释。

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(4)
高洛峰

为何不这么写:

var Scope = function(){};
Scope.prototype.$clone = function(){
    return Object.create(this);
}

PHP中文网

网易的笔试题目,我也做了。
var Scope = function(){};

Scope.prototype.$clone = function(){

var f = function(){};//创建一个新的构造函数

f.prototype = this;//将它的原型指向 当前的这个Scope 实例

return new f();//返回 新创建的这个对象的实例

}
之后ECMA5对原型式继承做了规范,增加Object.create这个API

阿神

这个是考虑原型继承,和自有属性 覆盖原型属性…

大家讲道理
function Scope(){
    this.title = null;
}

Scope.prototype.$clone = function(){
     return {
         __proto__:this
     }
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号