JS拷贝继承
<script>
//拷贝继承
let Person = {
name:"hb",
age:35,
paly:function () {
console.log("我会玩耍")
}
};
console.log("=====================");
let p2 = {};
for (let key in Person){
//这里可以取的是Person的键也就是name age play 而Person[key]就表示取里面的值
p2[key] = Person[key];
console.log(Person[key]);
console.log(p2[key])
}
console.log("-------------------");
console.log(p2.name);
//当类中有原型属性的时候
function Animal() {
}
Animal.prototype.p1 = "a1";
Animal.prototype.p2 = "a2";
Animal.prototype.run = function () {
console.log("我在奔跑")
};
let dog = {};
for (let pro in Animal.prototype){
dog[pro] = Animal.prototype[pro]
}
dog.run()
</script>
继承的方式
继承主要是为了节省内存空间
- 改变原型的指向:既能解决属性的继承也能解决方法的继承,但是容易造成属性的重复
- 借用构造函数继承:解决属性问题,我不能解决方法的问题
- 组合继承:继承解决属性的问题也能解决方法的问题
- 拷贝继承:就是把对象中需要共享的属性复制到心得对象中
函数表达式和函数声明
//函数声明
if (true){
function f1() {
console.log("f1")
}
}else{
function f1() {
console.log("f2")
}
}
f1()
//但是这样做的话,在IE8中会出现问题,在谷歌浏览器中没有问题
//函数表达式
let ff;
if (true){
ff = function() {
console.log("f1")
}
}else{
ff = function(){
console.log("f2")
}
}
ff();
//以后尽量用函数表达式也不要用函数声明
严格模式
//严格模式的this以上的this都是普通模式下的this
"use strict";//严格模式
function f2() {
console.log(this)
}
f2();
数组中的函数调用
//数组中的函数调用
arr= [
function () {
console.log("f1")
},
function () {
console.log("f2")
},
function () {
console.log("f3")
},
function () {
console.log("f4")
},
function () {
console.log("f5")
}
];
arr.forEach(function (ele) {
ele();
})