如下代码中, new 一个函数本质上做了什么?
function Modal(msg){
this.msg = msg
}
var modal = new Modal()
1.执行 new Modal()
1.1创建一个空对象 {},假设名字是 tmpObj
1.2执行 Modal 函数,执行过程中对 this 操作就是对 tmpObj 进行操作
1.3 函数执行完后返回刚刚创建的 tmpObj
2.把 tmpObj 赋值给 modal (modal指向同一个对象)
画出如下代码的原型图。
function People (name){
this.name = name;
}
People.prototype.walk = function(){
console.log(this.name + ' is walking');
}
var p1 = new People('饥人谷');
var p2 = new People('前端');
扩展 String 的功能增加 reverse 方法,实现字符串倒序
var str = 'hello jirengu'
var str2 = str.reverse()
console.log(str2) // 'ugnerij olleh'
var str = 'hello jirengu';
if(!String.prototype.reverse){
String.prototype.reverse = function(){
return Array.prototype.reverse.apply(this.split('')).join('');
};
}
var str2 = str.reverse();
console.log(str2);
有如下代码,代码中并未添加 toString方法,这个方法是哪里来的?画出原型链图进行解释
function People(){
}
var p = new People()
p.toString()
1.当前对象为 p ,查找 toString 方法,先从 p 的属性里找,没有找到;
2.再从 p.proto 中找,没有找到;
3.再从 p.proto.proto 中找,找到后返回。