prototype.原型链.原型链图
Posted itly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了prototype.原型链.原型链图相关的知识,希望对你有一定的参考价值。
//1.几乎所有函数都有prototype属性,这个是个指针,指向原型对象;Function.prototype这个没有
//2.所有对象中都有__proto__属性.(Object.prototype该属性的值为null)
//几乎所有函数都有 prototype/__proto__属性
//3.函数都是Function的实例(函数是通过Function创建出来的对象)
//自定义函数,Function,Array,RegExp,String,Boolean,Number,Object都是函数,都是通过Function创建出来的
//4.几乎所有函数都继承自:Function.prototype
//函数.__proto__===Function.prototype(除了Function.prototype本身,他没有prototype属性)
//Object.__proto__===Function.prototype
//Function.__proto__===Function.prototype
//5.String.prototype.__proto__===Object.prototype
// Array.prototype.__proto__===Object.prototype
// Number.prototype.__proto__===Object.prototype
// RegExp.prototype.__proto__===Object.prototype
// Function.prototype.__proto__===Object.prototype
//构造函数 普通函数 只在于调用方式不同
//=>当成普通函数来调用
//1.,函数内部的this指向调用的对象(如果没有找到调用的对象,this指向window)
//2.函数的返回值由return语句决定,如果没有说明函数没有返回值(返回值是undefined)
var p1 =Person("历程");
//=>当成构造函数来调用
//1.创建一个该构造函数的实例
//2.将构造函数内部this的值指向该实例
//3.执行函数体
//4.默认的函数值,该实例
function fn(){
returnthis;
}
var f3=new fn();
console.log(f3);//fn
//return {name:"张三"};
//此时构造函数的返回值是一个对象就不再使用默认的返回值了,返回值就是当前的对象
function fn2(){}
var f2 =new fn2();
console.log(fn2);//fn2的实例
//如果没有返回值,会是默认的返回值
//如果返回值是基本数据类型的话,还是会使用默认的返回值
var p2 = new Person("范冰冰")
//函数 对象在内存中的存储特点
//Object也是一个函数
//结合对象与函数的的内存结构图完整进行理解
//为什么Function.prototype是个函数呢?
//Function与Function.prototype之间的关系
function fn(){}
console.log(fn.constructor);//Function
console.log(fn.__proto__===Function.prototype);//true
console.log(Object.__proto__===Function.prototype);//true
console.log(Function.prototype===fn.__proto__);//true
console.log(Object.constructor);// Function
console.log(fn.prototype.constructor);//fn
console.log(Function.prototype.__proto__.constructor);// Object
var arr=["hello","say","pic"];
var str3;//undefined
for(var i=0;i<arr.length;i++){
str3+=arr[i];//如果一个变量str3声明了没有赋值会有默认的值undefined如果参与运算的话就会出问题
//所以以后再声明变量之后要给初始化的值
}
console.log(str3);//undefinedhellosaypic
console.log(undefined+"abc");//变为一个字符串undefined abc
以上是关于prototype.原型链.原型链图的主要内容,如果未能解决你的问题,请参考以下文章