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

网站建设建网站网络营销推广软件

网站建设建网站,网络营销推广软件,智能科技网站模板,免费的图片做视频在线观看网站JavaScript 自定义对象详解 自定义对象是 JavaScript 的核心编程范式,通过组合属性方法创建特定数据结构。以下是 5 种创建方式及深度应用: 一、对象创建的 5 种方式 1. 对象字面量(最常用) const user {// 属性name: "A…

JavaScript 自定义对象详解

自定义对象是 JavaScript 的核心编程范式,通过组合属性+方法创建特定数据结构。以下是 5 种创建方式及深度应用:


一、对象创建的 5 种方式

1. 对象字面量(最常用)
const user = {// 属性name: "Alice",age: 28,// 方法greet() {return `Hello, I'm ${this.name}`;},// 计算属性名["id_" + Date.now()]: "123X"
};console.log(user.greet()); // "Hello, I'm Alice"
2. 构造函数(创建相似对象)
function Person(name, age) {// 实例属性this.name = name;this.age = age;// 实例方法this.sayAge = function() {console.log(`I'm ${this.age} years old`);};
}// 原型方法(共享内存)
Person.prototype.intro = function() {return `Name: ${this.name}, Age: ${this.age}`;
};const bob = new Person("Bob", 30);
bob.sayAge(); // "I'm 30 years old"
3. Object.create()(基于原型创建)
const animal = {type: "Unknown",describe() {return `This is a ${this.type}`;}
};const dog = Object.create(animal);
dog.type = "Dog"; // 覆盖原型属性
console.log(dog.describe()); // "This is a Dog"
4. class 语法(ES6 面向对象)
class Product {// 构造函数constructor(name, price) {this.name = name;this.price = price;}// 实例方法formatPrice() {return `$${this.price.toFixed(2)}`;}// Getterget discountPrice() {return this.price * 0.9;}// 静态方法static compare(a, b) {return a.price - b.price;}
}const book = new Product("JS Guide", 29.99);
console.log(book.discountPrice); // 26.991
5. 工厂函数(无 new 创建)
function createUser(name) {let loginCount = 0; // 私有变量return {login() {loginCount++;return `${name} logged in ${loginCount} times`;}};
}const user = createUser("Chris");
console.log(user.login()); // "Chris logged in 1 times"

二、对象操作进阶技巧

1. 属性描述符控制
const obj = {};Object.defineProperty(obj, "secret", {value: "confidential",writable: false,      // 不可修改enumerable: false,    // 不可枚举configurable: false   // 不可删除
});obj.secret = "new";     // 静默失败(严格模式报错)
console.log(obj.secret); // "confidential"
2. 动态属性名
const dynamicKey = "status";
const order = {id: 1001,[dynamicKey + "_code"]: "PAID" // 计算属性名
};console.log(order.status_code); // "PAID"
3. 对象合并与克隆
const defaults = { theme: "light", fontSize: 16 };
const userSettings = { fontSize: 18 };// 浅合并
const settings = Object.assign({}, defaults, userSettings); // 深克隆(简单对象)
const deepClone = JSON.parse(JSON.stringify(defaults));

三、对象设计模式

1. 模块模式(封装私有状态)
const Counter = (function() {let count = 0; // 私有变量return {increment() {count++;return count;},reset() {count = 0;}};
})();Counter.increment(); // 1
Counter.count;       // undefined(无法访问)
2. 组合模式(混合功能)
const canEat = {eat() { console.log("Eating...") }
};const canWalk = {walk() { console.log("Walking...") }
};class Human {}
Object.assign(Human.prototype, canEat, canWalk);const person = new Human();
person.eat(); // "Eating..."
3. 观察者模式(事件驱动)
class EventEmitter {constructor() {this.events = {};}on(event, listener) {(this.events[event] || (this.events[event] = [])).push(listener);}emit(event, ...args) {this.events[event]?.forEach(fn => fn(...args));}
}// 使用
const emitter = new EventEmitter();
emitter.on("login", user => console.log(`${user} logged in`));
emitter.emit("login", "Alice"); // "Alice logged in"

四、最佳实践与陷阱

✅ 推荐做法
  1. 优先 class 语法:结构清晰,易维护
  2. 封装私有字段:使用 # 前缀(ES2022)
    class Wallet {#balance = 0; // 私有字段deposit(amount) { this.#balance += amount }
    }
    
  3. 对象冻结:防止意外修改
    const config = Object.freeze({ API_KEY: "XYZ" });
    config.API_KEY = "ABC"; // 静默失败(严格模式报错)
    
⚠️ 常见陷阱
  1. this 丢失问题
    const timer = {delay: 1000,start() {setTimeout(function() {console.log(this.delay); // undefined(this指向window)}, 100);}
    };
    // 修复:使用箭头函数或 .bind(this)
    
  2. 原型污染
    // 禁止修改内置原型
    Array.prototype.sum = function() { /*...*/ } // 危险!
    

五、自定义对象 vs 内置对象

特性自定义对象内置对象
创建方式手动定义语言自带
扩展性完全可控部分受限
内存占用按需设计固定开销
适用场景业务模型通用功能

💡 核心价值:自定义对象将数据+行为封装为独立单元,实现高内聚低耦合,是构建复杂应用的基础。例如 Vue/React 组件本质是自定义对象的扩展。

http://www.dtcms.com/wzjs/232342.html

相关文章:

  • 顺德新网站建设全球网站流量排名查询
  • 官方网站免费建设八爪鱼磁力搜索引擎
  • 网站建设网站排名优化金牌服务最新一周新闻
  • 重庆餐饮网站建设久久seo正规吗
  • 南昌网站设计制作班级优化大师手机版下载
  • 南通企业自助建站销售新人怎么找客户
  • 做视频网站需要多大的带宽投放广告的网站
  • wap网站建设服务国通快速建站
  • 什么是网络营销?网络营销的基本职能有哪些方面windows优化大师卸载不掉
  • 注册完域名怎么做网站百度知道网页版入口
  • 毕节做网站分销系统
  • 毕业设计都是做网站吗百度提交入口网站网址
  • 2018年做视频网站seo网站推广招聘
  • 工商注册代办多少费用旺道seo
  • 网站做聚合页面百度信息流代理
  • 网站建设及报价谷歌应用商店下载
  • b2c电子商务特点搜索引擎简称seo
  • 做网站诈骗百度指数教程
  • 建设工程 法律 网站油烟机seo关键词
  • h5页面的制作工具苏州百度关键词优化
  • 百度权重高的网站有哪些今日热搜榜排名最新
  • 做简历网站有什么百度排名优化软件
  • 做ppt介绍网站商业计划书
  • 大昌建设集团有限公司网站自助网站建设
  • 找人做彩票网站多少钱网站建设网站设计
  • 深圳网站建设加q479185700现在百度推广有用吗
  • wordpress 工具栏seo学校培训班
  • 网站建设营销公司济南百度竞价开户
  • 丹东市做网站seo搜索引擎优化是做什么的
  • 长沙模板网站长沙网站建设友情链接怎么交换