在JS中,new关键字做了什么

简介: 笔记

1. 先看代码


   function Person(){
        this.name = '朱小明';
        this.fn = function(){
            console.log('名字是:' + this.name)
        }
    }
    let person1 = new Person();
    // person1 拥有Person的属性和方法
    person1.fn()
  • 在这段代码里,通过new关键字创建了一个实例 person1
  • person1 继承了Person的所有属性和方法


2. 内部具体实现如下


// 1. 创建一个空对象
let obj = new Object(); // Object => 基类
// 2.设置它的原型链
obj._proto_ = Person.prototype;
// 3. 改变this指向
let result = Person.call(obj)
// 4.判断返回值类型
if(typeof (result) == "object"){
    person1 = result
}else{
    person1 = obj;
}
目录
相关文章
|
15天前
|
JavaScript
ES6学习(9)js中的new实现
ES6学习(9)js中的new实现
|
3月前
|
JavaScript 前端开发 开发者
JavaScript中的const关键字解析
JavaScript中的const关键字解析
|
3月前
|
JavaScript 前端开发
JavaScript变量命名规则及关键字详解
JavaScript变量命名规则及关键字详解
|
3月前
|
自然语言处理 JavaScript 前端开发
在JavaScript中,this关键字的行为可能会因函数的调用方式而异
【6月更文挑战第15天】JavaScript的`this`根据调用方式变化:非严格模式下直接调用时指向全局对象(浏览器为window),严格模式下为undefined。作为对象方法时,`this`指对象本身。用`new`调用构造函数时,`this`指新实例。`call`,`apply`,`bind`可显式设定`this`值。箭头函数和绑定方法有助于管理复杂场景中的`this`行为。
53 3
|
3月前
|
JavaScript 前端开发 C++
JavaScript中的let关键字详解
JavaScript中的let关键字详解
|
4月前
|
自然语言处理 JavaScript 前端开发
在JavaScript中,this关键字的行为可能会因函数的调用方式而异
【5月更文挑战第9天】JavaScript中的`this`关键字行为取决于函数调用方式。在非严格模式下,直接调用函数时`this`指全局对象,严格模式下为`undefined`。作为对象方法调用时,`this`指向该对象。用`new`调用构造函数时,`this`指向新实例。通过`call`、`apply`、`bind`可手动设置`this`值。在回调和事件处理中,`this`可能不直观,箭头函数和绑定方法可帮助管理`this`的行为。
35 1
|
4月前
|
JavaScript 前端开发
JavaScript 关键字
【5月更文挑战第2天】JavaScript 关键字。
45 2
|
4月前
|
JavaScript 前端开发 数据安全/隐私保护
|
4月前
|
JavaScript 前端开发
js开发:请解释this关键字在JavaScript中的用法。
【4月更文挑战第23天】JavaScript的this关键字根据执行环境指向不同对象:全局中指向全局对象(如window),普通函数中默认指向全局对象,作为方法调用时指向调用对象;构造函数中指向新实例,箭头函数继承所在上下文的this。可通过call、apply、bind方法显式改变this指向。
26 1
|
4月前
|
前端开发 JavaScript
JavaScript:this-关键字,2024中级前端开发面试解答
JavaScript:this-关键字,2024中级前端开发面试解答