函数有三种写法:
1.声明式:写一个函数,运行脚本时,系统预编译时帮我们创建这个函数对象
function fn(){}
2.定义式:创建函数的语法糖,直接生成一个函数数据(对象)被标识引用
var a=function(){}
3.标准的创建一个函数对象
var f1=new Function("var a=20;
console.log(a)");
//()里面写代码块,如果里面标识代码块,那么打印的将是字符串
f1();
原型链:
注意:系统内置构造函数的原型属性是不可以修改的,可以操作这个对象的属性(如果你尝试修改,那么系统也不会报错,但是也不会生效,它会跳过编译)
理解代码:
<script type="text/javascript">
Object.prototype.life=1;
Function.prototype.life=2;
function fn(){
this.name="karen"
}
var f1=new fn();
console.log(f1.name,f1.life);
console.log(fn.name,fn.life)
</script>
答案:
思维图:
思维方式:
构造函数的原型对象指向的是new Object
而一般函数的原型对象指向的是Function.prototype,然后再指向Object.prototype