96SEO 2026-06-05 10:02 2
JavaScript 中对象是如何创建与继承的,说实话,这是一个老生常谈的问题了,哈哈,但咱就是说,还是有必要好好梳理一下的。
从理解对象谈起,说明了对象中的两个关键点key和prototype,然后介绍了对创建对象的三种方式,包括字面量、构造函数、Object.create和class person,Zui后对JavaScript的继承进行了详细解析。

日常开发中,我们需要创建各种各样的对象,比如用户对象、商品对象等,那么,如何创建对象呢?
Zui直观、Zui简洁的创建方式,直接用 {} 包裹键值对,相当于“随手创建一个独立对象”,不用额外定义模板,适合快速创建单个对象。
// 基础写法
const person = {
name: "张三",
age: 20,
// 方法简写
sayHello {
console.log;
}
};
// 特殊场景写法
const user = {
"user-name": "lisi",
"age+": 21,
{ // 计算属性名
console.log;
}
};
// 使用方式
person.sayHello; // 输出:你好,我是张三
user; // 输出:lisi
user.sayHi; // 输出:Hi~
核心特点
✅ Zui简单、代码量Zui少,上手无门槛,日常开发高频使用
✅ 适合创建「单个独立对象」
❌ 不适合批量创建多个相似对象
构造函数模式Ru果需要创建多个结构相似的对象,就需要一个“模板”——构造函数。
构造函数本质是一个普通函数,通过 this 绑定属性和方法,配合 new 关键字生成实例,实现批量创建。
// 定义构造函数
function Person {
// this 指向当前创建的实例
this.name = name; // 实例属性
this.age = age;
}
// 公共方法挂载到原型上
Person.prototype.sayHello = function {
console.log;
};
// 创建实例
const p1 = new Person;
const p2 = new Person;
// 使用实例
p1.sayHello; // 输出:我是张三,今年20岁
p2.sayHello; // 输出:我是李四,今年21岁
// 验证:两个实例的方法是同一个
console.log; // 输出:true
核心特点
✅ 公共方法「共享」,只创建一次大幅节省内存,性NengZui优
✅ 可通过 instanceof 判断实例类型,便于类型校验
Object.create 是 ES5 引入的方法,核心功Neng是「基于一个现有对象作为原型,创建一个新对象」。它跳过了构造函数,直接通过原型对象生成新实例,适合灵活实现原型继承,或创建无原型的空对象。
// . 定义原型对象
const personProto = {
name : "默认名字" , // 原型属性
sayHello {
console . log ;
} ,
// 原型上的方法也Ke以访问原型上的其他属性
showDefaultName {
console . log ;
}
} ;
// . 创建新对象
const p1 = Object . create ;
p1 . name = "张三" ; // 覆盖原型上的 name 属性
// . 使用新对象
p1 . sayHello ; // 输出:我是张三
p1 . showDefaultName ; // 输出:默认名字:张三
// 特殊场景:创建空原型对象
const emptyObj = Object . create ;
console . log ; // 输出:undefined
核心特点
✅ 灵活实现「原型继承」,无需定义构造函数,直接复用现有对象的原型
支持原型链查找,可灵活 公共方法 / 属性。
✅ 可创建「空原型对象」,避免继承 Object 的原型方法,适合Zuo纯净的数据容器
你懂的,这样Ke以避免一些不必要的麻烦。❌ 缺点1:引用类型属性依然被所有实例共享
害,这是一个需要注意的问题。❌ 缺点2:无法向父原型对象传递参数
说实话,这个缺点还是比较明显的。 class语法糖 class 是 ES6 引入的语法糖,本质还是「构造函数 + 原型」,只是写法geng简洁、语义化geng强,解决了原生构造函数+原型写法繁琐、可读性差的问题,是现代 JS 开发的首选方案。
class Person {
constructor {
this . name = name ;
this . age = age ;
}
sayHello {
console . log ;
}
static showClassName {
console . log ;
}
get fullInfo {
return ${ this . name } - ${ this . age } 岁 ;
}
set fullInfo {
const = info . split ;
this . name = name ;
this . age = Number ;
}
}
const p1 = new Person ;
// 使用实例
console . log ;
// 调用静态方法
Person.showClassName;
...
...
...
核心底层:理解「原型链」「instanceof原理」「new原理」,这是JS 对象和继承的核心,也是面试高频考点;
一句话实战:日常开发用「 对象字面量+class+extends 」 ,Neng覆盖所有场景 , 简洁又高效 。
...
instanceof 的底层实现原理是什么 ?
作用 : 判断一个 对象 是否是某个构造函数 的 实例 , 本质是 「 沿着对象的 原型链向上查找 , kan是否Neng找到构造函数的 prototype 」 。
判断传入的Constructor是否是函数,不是则报错;
获取构造函数的 原型 对象 ;
沿着对象的 proto 逐级向上查找 ;
Ru果查到 原型链顶端 还没找到 , 返回false 。
Ru果找到某个 原型 对象 和构造函数的prototype相等 , 返回true ;
模拟instanceof底层实现
function myInstanceof {
if )returnfalse;
let proto=Constructor.prototype;
while{
ifreturntrue;
ifreturnfalse;
obj=Object.getPrototypeOf;
}
}
测试:
function Person{}
let p=new Person;
myInstanceof
myInstanceof
myInstanceof
new 的底层逻辑是什么 ?
new 的核心逻辑 :
判断构造函数的 返回值 : Ru果返回的是 对象 / 函数 , 就返回这个返回值 ;否则返回刚 创建 的空 对象 。
创建一个 空 对象 ,并且让这个 空 对象 的 proto 指向Constructor的prototype ;
执行构造函数 , this绑定到instance ,传入参数;
模拟new关键字
function myNew{
ifthrownewTypeError;
let instance=Object.create;
let result=Constructor.apply;
return||typeof result==='function'?result:instance;
}
测试: function Person{this.name=name;} let p=myNew; Zui终如下: JavaScript中对象的创建与继承方式有哪些?
字面量方式:使用{}直接创建一个对象,.
使用,通过.
,直接通过..
:ES6,.
不同场景下,如何选择合适的对象的创建与继承方式?
单:.
多:.
特:.
这些就是JavaScript中,我认为比较常用的几种对象的.希望对你有所帮助!
总之,在实际开发中,我们应该根据具体的需求和场景来选择合适的对象的.这样才Neng写出geng加高效、可维护的代码。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback