<script>
var a = {
name : '小明'
};
var b = cloneObj(a);
alert(b.name);
function cloneObj(obj) {
var F = function () { };
F.prototype = obj;
return new F();
}
</script>
首先我们还是通过原型链的方式来解释
首先f1通过原型链找到F.prototype;
obj直接赋值给F.prototype;
name其实是在obj的下面;
直接return的就是f1;
f1和b是相同的;
所以b顺着原型链找name
现在我们改一下b的name属性
<script>
var a = {
name : '小明'
};
var b = cloneObj(a);
b.name = '小强';
alert(b.name); //小强
alert(a.name); //小明
function cloneObj(obj) {
var F = function () { };
F.prototype = obj;
return new F();
}
</script>
先在b自己下面找,如果找到了就不在沿着原型链找了