如何在网站中做二级下拉菜单,个人网页设计硬件需求,手机模板网站模板,上海一 网站建设公司原型:函数都有prototype属性,称之为原型#xff0c;也称为原型对象 原型可以放一些属性和方法#xff0c;共享给实例对象使用 原型可以做继承
原型链:对象都有__proto__属性,这个属性指向它的原型对象,原型对象也是对象,也有__proto__属性,指向原型对象的原型对象,这样一层一…原型:函数都有prototype属性,称之为原型也称为原型对象 原型可以放一些属性和方法共享给实例对象使用 原型可以做继承
原型链:对象都有__proto__属性,这个属性指向它的原型对象,原型对象也是对象,也有__proto__属性,指向原型对象的原型对象,这样一层一层形成的链式结构称为原型链最顶层找不到则返回 null 1.javascript原型链经典函数构造器 prototype
function Person(name) {this.name name;
}Person.prototype.sayHello function() {console.log(Hello, my name is ${this.name});
};const alice new Person(Alice);
alice.sayHello(); // Hello, my name is Aliceconsole.log(alice.__proto__ Person.prototype); // true
console.log(Person.prototype.__proto__ Object.prototype); // true
console.log(Object.prototype.__proto__); // null解释 每个对象都有一个内部属性 [[Prototype]]常用 __proto__ 访问指向它的原型对象。 当访问对象的属性或方法时如果自身没有会沿着 [[Prototype]] 一层层往上找这个查找链就是原型链。 上面例子中alice 访问 sayHello 方法时没在自身属性里找到就去它的原型对象 Person.prototype 查找。 Person.prototype 的原型是 Object.prototype这构成了原型链的多层关系。 Object.prototype 的原型是 null链条终点。
2.TypeScript 版本class 语法
class Person {name: string;constructor(name: string) {this.name name;}sayHello() {console.log(Hello, my name is ${this.name});}
}const alice new Person(Alice);
alice.sayHello(); // Hello, my name is Aliceconsole.log(Object.getPrototypeOf(alice) Person.prototype); // true
console.log(Object.getPrototypeOf(Person.prototype) Object.prototype); // true
console.log(Object.getPrototypeOf(Object.prototype)); // null解释 TypeScript 使用 class 关键字声明类语法更现代代码更清晰。 sayHello 是类的方法实际挂载在 Person.prototype 上实例通过原型链访问。 Object.getPrototypeOf() 用来获取对象的原型效果和 __proto__ 类似但更标准安全。 原型链关系和JavaScript版本完全一样实例原型 → 类的 prototype → Object.prototype → null。
3.总结 JavaScript版本用构造函数和显式原型适合传统理解原型链机制。 TypeScript版本用类语法更符合现代代码风格本质上还是基于JavaScript原型链实现。