问题:
1. 问题6方法三的代码调用call的行为是多余的。
2. 问题8中toString不是来自Object,而是来自Object.prototype。
p中没有定义过toString()方法,所以会通过p.proto向上寻找,p.proto指向Person.prototype,Person.prototype中也没有定义过toString(),所以会向上寻找Person.prototype.proto找到Object,object.prototype有一个tosting的方法,如果object.prototype没有定义的,则会找不到,报错
3. 原型链解释错误。
每个对象都有一个私有属性(称为是[[Prototype]]==> proto), 它持有一个连接到另一个称为其 prototype 对象的链接。该原型对象具有一个自己的原型,等等,直到达到一个对象的 prototype 为 null。从一个对象的object._proto_到最终_proto_为null的路径称为原型链。
4. 问题9代码错误,不符合题意。
String.prototype.getMostOften=function(){
var arr=[];
var str=this.toString();
for(var i=0;i<str.length;i++){
if(arr[str[i]]){
arr[str[i]]++
}else{
arr[str[i]]=1
}
}
var max=0;
var count
for(var i in arr){
if(arr[i]>max){
max=arr[i]
count=i
}
}
console.log('出现最多的字母是:'+count+' '+max+' 次')
return count
}
var str = 'ahbbccdeddddfg';
var ch = str.getMostOften();
console.log(ch)
5. 问题10老毛病,Array.proto指向了Object解释错误。
var a=[]
a instanceof Array//true;
a instanceof Object//true;
Array._proto_指向了Object.prototype
所以两个都是返回都是true
6.第十二题 // p1,p2通过new Person()的方式创建一个对象,然后返回的一个对象,返回的两个函数实际上声明两次,所以这两个方法内容一样,但是不相等。 相等??确定 少写了一个字。。。
网友评论