Cada função JavaScript possui um atributo de protótipo (o objeto JavaScript não possui esse atributo). Este atributo refere -se a um objeto, que é o objeto de protótipo. O JavaScript nos permite modificar esse objeto de protótipo.
Existem 2 maneiras de modificar:
Método 1: Adicione propriedades ou métodos ao objeto de protótipo original
function Person () {} Person.prototype.add = function () {alert (this.name);}; pessoa.prototype.name = "aty"; var p1 = new Person (); p1.add (); // atyMétodo 2: Reescrever (substituir) o objeto de protótipo
function pessoa () {} pessoa.prototype = {add: function () {alert (this.name);}, nome: "aty"} var p2 = new Person (); p2.add (); // atyVocê pode ver que os dois métodos acima podem modificar o protótipo, então qual é a diferença? Qual método é o método recomendado?
function pessoa () {} função animal () {} var pessoa = new Person (); var animal = new animal (); // modifica o protótipo Pessoas.prototype.say = function () {alert ("pessoa");} // Modifique o protótipo animal.protype = {}: function () {alert ("") personanimal.say (); // não -Esgot TypeError: indefinido não é uma funçãoSe você criar um objeto primeiro e depois modificar o protótipo, se você usar o método 1, o objeto que você criou poderá acessar corretamente o protótipo modificado; Se você usa o método 2, o objeto que você criou não pode acessar o protótipo modificado. Nesta perspectiva, obviamente o método 1 é melhor que o método 2. Por que isso está acontecendo?
function pessoa () {} função animal () {} var pessoa = new Person (); var animal = new animal (); alerta (pessoa .__ proto__ === Person.prototype); // Truealert (animal .__ proto__ === Animal.protype); //) Modifique protótipo. Animal.prototype = {digamos: function () {alert ("pessoa");}} alert (pessoa .__ proto__ === Person.prototype); // Truealert (animal .__ proto__ === animal.protype); // falseObviamente, isso é muito semelhante a "Modificar referência" e "modificar o objeto apontado por referência" em Java, e o efeito é o mesmo.
A explicação detalhada acima da diferença entre modificação e reescrita (substituição) do protótipo JavaScript é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.