Maison  >  Article  >  interface Web  >  Explication sur les questions liées au nouvel opérateur

Explication sur les questions liées au nouvel opérateur

jacklove
jackloveoriginal
2018-05-21 11:02:171353parcourir

Voici quelques problèmes avec le nouvel opérateur. Cet article expliquera les problèmes concernés.

Regardez d'abord les résultats

function Person (name, age, job) {  this.name = name  this.age = age  this.job = job
}
Person.prototype.sayName = function () {  console.log(this.name)
}// 使用new操作符var p1 = new Person('laoyang', '22', 'coding')
p1 instanceof Person // true// 不使用new 操作符var p2 = new Object()
Person.call(p2, 'xiaoyang', '2', 'test')
p2.__proto__ = Person.prototype
p2 instanceof Person // true

Comparez les différences

// 使用new 操作符直接创建实例var p1 = new Person('laoyang', '22', 'coding')
// 不使用new 操作符var p2 = new Object() 
// p2 创建成为一个对象 这时p2的原型是ObjectPerson.call(p2, 'xiaoyang', '2', 'test')
 // Person构造函数在 p2 对象的环境内执行 这时p2已经是一个具有Person属性的实例了,但原型是Objectp2.__proto__ = Person.prototype 
// 最后把Person.prototype 赋值给p2.__proto__,让p2的原型指向Person.prototype

Étapes pour créer une instance sans utiliser l'opérateur new :

Person. call(p2, 'xiaoyang', '2', 'test') // d

Cet article présente les problèmes liés au nouvel opérateur. Pour plus de problèmes connexes, veuillez prêter attention au. Site Web chinois PHP.

Recommandations associées :

Explication des problèmes courants liés aux fonctions JS

Explication des fonctions liées à JavaScript

Explication sur jquery DOM et événements

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn