当使用new命令创建一个对象时,实际上进行了以下操作:
- 创建一个空的Javascript对象,作为新创建的对象实例
- 将this指向该对象
- 执行函数体内的代码,即对该对象进行初始化
- 返回新创建的对象,如果函数返回了一个object类型的值,则返回该对象。否则返回上述新创建的对象
示例1:创建一个Person类对象
function Person(name, age) {
this.name = name;
this.age = age;
}
const person1 = new Person('Jack', 20);
console.log(person1); // Person { name: 'Jack', age: 20 }
上述代码中,使用new关键字创建了一个Person类的实例对象person1。new Person的过程中即创建了一个Person类的实例对象,并将this指向该对象并执行了函数体内的代码,初始化了该实例对象。最后将新创建的对象返回并赋给变量person1。
示例2:创建一个自定义的Error对象
function MyError(message) {
this.message = message;
this.name = 'MyError';
Error.captureStackTrace(this, MyError);
}
MyError.prototype = Object.create(Error.prototype);
MyError.prototype.constructor = MyError;
const myError = new MyError('Something went wrong');
console.error(myError.stack); // MyError: Something went wrong
// at Object.<anonymous> (/Users/user/app.js:5:13)
// at Module._compile (module.js:652:30)
// at Object.Module._extensions..js (module.js:663:10)
// at Module.load (module.js:565:32)
// at tryModuleLoad (module.js:505:12)
// at Function.Module._load (module.js:497:3)
// at Function.Module.runMain (module.js:693:10)
// at startup (bootstrap_node.js:188:16)
// at bootstrap_node.js:609:3
上述代码中,定义了一个MyError类,它是自定义的Error类。使用new关键字创建了一个MyError类的实例对象myError。在MyError构造函数中,使用Error.captureStackTrace()方法记录堆栈跟踪信息,以便更好地调试和定位错误。
通过这两个示例可以看到,使用new命令可以方便地创建对象实例,并且可以自定义类的各种属性和方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中的 new 命令 - Python技术站