AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
## 什么是对象 万物皆对象,函数可以封装一段代码 ,对象可以封装一组属性和方法. ## 对象字面量 ``` var dog = { name: '旺财', type: '中华田园犬', color: 'yellow', bark: function () { console.log('汪汪汪'); } } ``` ## 构造函数 动态添加属性和方法. ``` var obj = new Object(); //创建一个空对象 obj.name = 'jack'; obj.say = function(){ console.log('哈哈哈'); } ``` ## 工厂方法 ``` function createHero(name, age, gender) { var obj = new Object(); obj.name = name; obj.age = age; obj.gender = gender; obj.say = function () { console.log(this.name + '说话'); } return obj; } obj1 = createHero('jack', 20, '男'); obj2 = createHero('milan', 18, '女'); console.log(obj1, obj2); ``` ### 自定义构造函数 ``` function Hero(name, age, gender) { this.name = name; this.age = age; this.gender = gender; this.say = function () { console.log(this.name + ':hello'); } } var h = new Hero('jack', 20, '男'); console.log(h) ``` ## new 关键字执行过程 1. 在内存中创建可一个空的对象. 2. 让构造函数中的this指向刚刚创建的对象. 3. 执行构造函数,在构造函数中设置属性和方法(当然也可以做其他事情). 4. 返回了当前对象. ## this this出现的地方: 1. 函数中: 指向window. 2. 方法中: 指向这个方法所属的对象. 3. 构造函数中: 就是构造函数中创建的对象. ## 遍历对象和删除对象的属性 ``` var obj = { name: 'jack', age: 20, say: function () { console.log('hello'); } } for (let key in obj) { console.log(key + '-->' + obj[key]); } ``` 结果 ``` name-->jack age-->20 say-->function () { console.log('hello'); } ``` delete 对象.属性 就可以删除属性了