<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
function Dog(name) {
this.name = name;
}
Dog.prototype.bark = function () {
console.log('bark')
}
Dog.prototype.sayName = function () {
console.log('my name is ' + this.name)
}
//new干了什么事情
/*
1,创建一个新对象
2,让该对象的原型链指向构造函数的原型
3,执行构造函数、并且改变构造函数的this指向、复制给创建的对象
4,讲该对象返回
*/
function _new(Fn, ...arg) {
let obj = {
}
obj.__proto__ = Fn.prototype;
Fn.call(obj, ...arg)
return obj;
}
//要实现一个_new方法实现以下:
let dog = _new(Dog, 'dooooog')
dog.sayName()
dog.bark()
</script>
</body>
</html>
js new关键字干了什么事
猜你喜欢
转载自blog.csdn.net/Yun__shen/article/details/119874271
今日推荐
周排行