1. Конструктор
Значение конструктора является функцией. В JavaScript значения, массивы, функции и объекты типов, за исключением нулевого и неопределенного атрибута конструктора. нравиться:
Скопируйте код следующим образом: var a = 12, // номер
b = 'str', // string
c = ложь, // логический
d = [1, 'd', function () {return 5;
e = {name: 'e'}, // объект
f = function () {return 'function';
console.log ('a:', a.constructor);
console.log ('b:', b.constructor);
console.log ('c:', c.constructor);
console.log ('d:', d.constructor);
console.log ('e:', E.constructor);
console.log ('f:', f.constructor);
Приведенные выше конструкторы встроены в JavaScript, и мы также можем настроить конструкторы, такие как:
Кода -копия выглядит следующим образом:
Функция A (имя) {
this.name = name;
}
var a = new a ('a');
Console.log (A.Constructor);
При вызове конструктора вам нужно использовать новое ключевое слово.
Кода кода следующая: var a = 4;
var b = новое число (4);
Console.log ('a:', Typeof a);
Console.log ('b:', typeof b); // b: объект
2. Прототип
Прототип является свойством функции. нравиться:
Скопируйте код следующим образом: function fn () {}
console.log (fn.prototype);
Атрибут прототипа в основном используется для реализации наследования в JavaScript, например:
Скопируйте код следующим образом: Функция A (имя) {
this.name = name;
}
A.prototype.show = function () {
console.log (this.name);
};
Функция B (имя) {
this.name = name;
}
B.Prototype = A.Prototype;
var test = new B ('test');
test.show ();
Здесь есть проблема.
Скопируйте код следующим образом: console.log (test.constructor);
Это связано с тем, что B.Prototype = A.Protototys изменил конструктор B.Prototype на A, поэтому вам необходимо восстановить конструктор B.Prototype:
Скопируйте код следующим образом: Функция A (имя) {
this.name = name;
}
A.prototype.show = function () {
console.log (this.name);
};
Функция B (имя) {
this.name = name;
}
B.Prototype = A.Prototype;
B.prototype.constructor = b;
var test = new B ('test');
test.show ();
Console.log (test.constructor);
Причина для этого заключается в том, что значение прототипа является объектом, а его функция конструктора - это функция, в которой он находится, то есть:
Скопируйте код следующим образом: Console.log (A.Prototype.Constructor === A);