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

网站访问慢 分析工具做网络技术方案叫什么

网站访问慢 分析工具,做网络技术方案叫什么,wordpress 侧栏,中国商业网点一、原型继承基本概念JavaScript 使用原型继承(Prototypal Inheritance)作为其面向对象编程的基础,这与传统的基于类的继承有本质区别。1. 原型链(Prototype Chain)每个 JavaScript 对象都有一个内部链接指向另一个对象…

一、原型继承基本概念

JavaScript 使用原型继承(Prototypal Inheritance)作为其面向对象编程的基础,这与传统的基于类的继承有本质区别。

1. 原型链(Prototype Chain)

每个 JavaScript 对象都有一个内部链接指向另一个对象,称为它的原型(prototype)。当访问对象的属性时,如果对象自身没有该属性,就会沿着原型链向上查找。

function Animal(name) {this.name = name;
}Animal.prototype.speak = function() {console.log(`${this.name} makes a noise.`);
};const dog = new Animal('Dog');
dog.speak(); // 先在dog实例查找,然后在Animal.prototype查找

2. 关键对象和属性

  • __proto__(现已标准化为 Object.getPrototypeOf()):对象的实际原型

  • prototype:构造函数特有的属性,用于设置新创建实例的原型

  • constructor:指向创建该对象的构造函数

二、属性访问规则

1. 属性查找机制

当访问对象属性时,JavaScript 引擎遵循以下顺序:

  1. 检查对象自身属性(包括可枚举和不可枚举属性)

  2. 如果未找到,沿着原型链向上查找

  3. 直到 Object.prototype(所有对象的顶层原型,其 __proto__ 为 null

  4. 如果最终未找到,返回 undefined

const parent = { a: 1 };
const child = Object.create(parent);
child.b = 2;console.log(child.b); // 2 (自身属性)
console.log(child.a); // 1 (继承属性)
console.log(child.c); // undefined (不存在)

2. 属性遮蔽(Property Shadowing)

如果对象和它的原型有同名属性,对象自身的属性会遮蔽原型上的属性

const proto = { value: 10 };
const obj = Object.create(proto);
obj.value = 20; // 遮蔽原型属性console.log(obj.value); // 20 (自身属性)
delete obj.value;
console.log(obj.value); // 10 (恢复访问原型属性)

三、原型继承的实现方式

1. 构造函数模式

function Person(name) {this.name = name;
}Person.prototype.greet = function() {console.log(`Hello, I'm ${this.name}`);
};const john = new Person('John');
john.greet(); // Hello, I'm John

2. Object.create()

const animal = {eat() {console.log(`${this.name} eats.`);}
};const rabbit = Object.create(animal, {name: { value: 'White Rabbit' }
});rabbit.eat(); // White Rabbit eats.

3. ES6 Class 语法糖

class Animal {constructor(name) {this.name = name;}speak() {console.log(`${this.name} makes a noise.`);}
}class Dog extends Animal {speak() {console.log(`${this.name} barks.`);}
}const d = new Dog('Rex');
d.speak(); // Rex barks.

四、属性访问的特殊情况

1. 不可写属性

如果原型属性被标记为 writable: false,子对象无法修改该属性:

const proto = {};
Object.defineProperty(proto, 'value', {value: 10,writable: false
});const obj = Object.create(proto);
obj.value = 20; // 严格模式下会报错console.log(obj.value); // 10 (修改失败)

2. setter/getter 继承

const proto = {get value() {return this._value * 2;},set value(v) {this._value = v;}
};const obj = Object.create(proto);
obj.value = 10;
console.log(obj.value); // 20

五、原型相关方法

1. 检查原型关系

// 检查对象是否是另一个对象的原型
console.log(proto.isPrototypeOf(obj)); // true// 检查实例关系
console.log(obj instanceof Object); // true

2. 获取/设置原型

// 获取原型
const proto = Object.getPrototypeOf(obj);// 设置原型(性能差,不推荐)
Object.setPrototypeOf(obj, newProto);

六、最佳实践

  1. 不要直接修改内置对象原型(如 Array.prototype

  2. 优先使用 Object.create() 而非 __proto__

  3. 对于性能敏感代码,避免长原型链

  4. 考虑使用 ES6 Class 语法提高可读性

七、原型继承图示

实例对象 (obj) → 构造函数.prototype → Object.prototype → null↑                   ↑|__proto__          |__proto__

JavaScript 的原型继承提供了极大的灵活性,理解其工作原理对于编写高效、可维护的代码至关重要。

http://www.dtcms.com/a/413599.html

相关文章:

  • 网站动态背景怎么做什么是网盟推广
  • 红鱼洞水库建设管理局网站收益网站制作
  • 长沙网站推广系统十一冶建设集团有限责任公司网站
  • 做化妆品注册和注册的网站吗济南高新区网站建设公司
  • 在线制作图片网站旅社网站怎么建立
  • 时代创信网站建设购买国外服务器
  • 学做网站要代码做公益网站
  • 做 理财网站有哪些问题手机网站建设专家
  • 开发一个网站临安市规划建设局网站
  • 那些网站是做俄罗斯鞋子深圳网站建设 宝华大厦
  • 网站建设搭建长沙百度关键词优化
  • 中山网站建设包括哪些梅州市住房和城乡建设局官方网站
  • 正规网站建设公司在哪里3d建模是什么专业
  • 自己创网站美发营销型网站
  • 做外贸网站建设电商网站建设计入什么科目
  • jeecms做企业网站如何快速做h5网站
  • 孝感建设银行官网站中国新闻社是什么级别媒体
  • 哈尔滨网络公司网站建设会员制营销的优缺点
  • 怎样可以查看网站是由哪个公司做的网站降权投诉
  • 酒店如何做网站深圳卓富通做网站
  • 云服务器网站文件夹网站建设维护招聘
  • 网站建好了seo怎么做成都广告设计公司有哪些
  • 看想看的做想做的电影网站浙江做网站多少钱
  • 大学里读网站建设高校移动门户网站建设
  • 首页网站模板wordpress不同列表页
  • 深圳企业网站app开发wordpress引用jquery
  • 网站做直播需要什么资质美橙网站建设经典案例
  • 定制网站建设流程国家企业网
  • 制作个人网站怎么做湖南企业app
  • 网站改版404页面网站项目计划说明书