当前位置: 首页 > news >正文

淘宝客网站名扬中网站建设门户报价

淘宝客网站名,扬中网站建设门户报价,效果图设计师有前景吗,秦皇岛网站推广排名JavaScript 的原型(Prototype)是其面向对象编程模型的核心概念之一,它决定了对象如何继承属性和方法。通过理解 JavaScript 的原型,你可以更好地理解对象之间的关系以及如何扩展对象功能。 核心概念 [[Prototype]](内部…

JavaScript 的原型(Prototype)是其面向对象编程模型的核心概念之一,它决定了对象如何继承属性和方法。通过理解 JavaScript 的原型,你可以更好地理解对象之间的关系以及如何扩展对象功能。


核心概念

  1. [[Prototype]](内部属性)

    • 每个 JavaScript 对象都有一个隐藏的内部属性,称为 [[Prototype]]
    • 这个属性通常指向另一个对象,也就是该对象的原型。
  2. Object.prototype

    • 所有普通对象都最终继承自 Object.prototype,除非手动更改。
    • Object.prototype 是原型链的顶端,它的 [[Prototype]]null
  3. __proto__

    • 这是一些浏览器(如 Chrome 和 Firefox)中提供的访问 [[Prototype]] 的非标准方式。
    • 它主要用于调试,不推荐在实际代码中使用。
    • 现代的方式是使用 Object.getPrototypeOf(obj)Object.setPrototypeOf(obj, prototype)
  4. 构造函数与 .prototype

    • 每个函数(作为构造函数)都有一个 prototype 属性。
    • 当用构造函数创建一个对象时,该对象的 [[Prototype]] 会被设置为该构造函数的 prototype

示例

1. 创建对象与原型链
function Person(name) {this.name = name;
}Person.prototype.sayHello = function () {console.log(`Hello, my name is ${this.name}`);
};const person1 = new Person("Alice");
person1.sayHello(); // Hello, my name is Aliceconsole.log(person1.__proto__ === Person.prototype); // true
console.log(Person.prototype.__proto__ === Object.prototype); // true
console.log(Object.prototype.__proto__); // null
2. 使用 Object.create 创建对象
const proto = {greet() {console.log("Hello!");},
};const obj = Object.create(proto);
obj.greet(); // Hello!
console.log(Object.getPrototypeOf(obj) === proto); // true
3. 修改原型
function Dog(name) {this.name = name;
}const dog = new Dog("Rex");// 修改原型
Dog.prototype.bark = function () {console.log(`${this.name} says Woof!`);
};dog.bark(); // Rex says Woof!

原型链

JavaScript 通过原型链实现继承。如果对象在自身没有找到属性或方法,会沿着原型链向上查找,直到顶端的 Object.prototype,若仍未找到,则返回 undefined

示例:

const obj = {};
console.log(obj.toString()); // "[object Object]" 来自 Object.prototype

原型链结构:

  • objObject.prototypenull

注意点

  1. 避免循环引用
    修改原型链时要小心,避免导致无限循环。

    const a = {};
    a.__proto__ = a; // 不推荐,可能导致错误
    
  2. 性能问题
    频繁访问深层次的原型链可能会导致性能问题。

  3. 现代方法
    使用 class 语法可以更优雅地操作原型。

    class Animal {speak() {console.log("Animal speaks");}
    }class Dog extends Animal {bark() {console.log("Dog barks");}
    }const dog = new Dog();
    dog.speak(); // Animal speaks
    dog.bark();  // Dog barks
    
http://www.yayakq.cn/news/582646/

相关文章:

  • 90设计网站可以商用吗学电子商务后悔死了
  • 电子商务网站建设知识电脑培训学校排名
  • 城乡建设网站职业查询系统网站结构模板
  • 幸福宝推广app网站入口网站优化的方法
  • ps常用素材网站有哪些大气的网站模板
  • 淮阳住房城乡建设局网站模板网站建设珠海
  • 做网站前的准备什么软件开发专业网站
  • 广州网站建设优化公司产品网络推广的方法
  • 做网站应该用什么配置的电脑开发一套app要多少钱
  • 注册了域名之后如何建立一个网站加强网站建设考察交流
  • 泉州北京网站建设价格赤水市白房建设局网站
  • 网络教育做的好的网站精通网站建设 100
  • 网站运营工作的内容做图片带字的网站
  • 站点搜索帮人家做网站
  • 网站高防服务器租用企业备案号查询系统
  • 网易严选的网站建设延安做网站的公司
  • 百科网站怎么做珠海城乡建设厅网站
  • 中文小说网站建设与维护沂源放心企业网站建设方案报价
  • 重庆免费微网站安徽省建设质量安全协会网站
  • 专业行业网站建站报价广东东莞属于哪个市
  • 个人网站备案下载站做手机旅游网站
  • 宁波网站建设怎么样营销型手机网站
  • 做淘宝链接网站微信 网站界面 模板
  • 360个人网站怎么推广wordpress西部
  • 医美网站建设网站建设选哪家公司好
  • 网站索引量突然下降电子商务网站建设及其相关法律问题
  • 经常做ppt的网站比较好约的网站设计
  • 类模板模板下载网站有哪些中国建盏大师排名表
  • 做衣服网站天津市网站制作 公司
  • 深圳最好的营销网站建设公司排名权威发布是鼠头