js 对象和构造函数

一、对象的创建方法

题外话:

  1. java c++ 同样能生产出对象,但是是死的

  2. JavaScript 生产出的对象是活的,更像是人的生长过程,后天可以增加和删除方法

用字面量创建

var obj = {};

二、对象的增删改

let obj = {
    
};

obj.name = '张三';
obj.age = 18;
delete obj.age;

一旦经历了 var 的操作,所得出的属性,window ,这种的属性叫做不可配置的属性。不可配置的属性 delete 不掉

var a = 'abc';
a.name = 'mary';
console.log(a.name); // undefined
obj.name = '李四';

二、构造函数

  1. 系统自带的构造函数 new Object()

Object 就像一个对象工厂一样,执行一次生成一个对象,

并且每一次生成的对象都是一模一样且独一无二的

  1. 自定义的

  2. Object.create(prototype)

var obj = new Object(); --> var obj = {};
// 可以灵活地往里面添加东西
obj.name = '张三';
obj.age = 18;
obj.sex = 'male';

// 删除东西
delete obj.sex;
// 构造函数
function Person() {
    
}

// 必须加 new 操作符,构造函数必须遵循大驼峰式命名规则(首字母大写)-- TheFirstName
// 小驼峰式 -- theFirstName
var person = new Person();

用字面量创建对象和用构造函数创建对象的结果是一样的

var obj = {};
var obj1 = new Object();
// 在控制台打开里面的东西都是一样的 ⇒ 因为要经过包装类

三、构造函数的内部原理

构造函数三部曲

  1. 在函数体最前面隐式加上 this = {}
  2. 执行 this.xxx = xxx
  3. 隐式的返回 this 对象

有了 new 关键字之后,就能让普通函数拥有构造函数的功能

function Student(name, age, sex) {
    // 1. 在函数体的最前面隐式添加一个 this 对象
    // var this = {
    //     name : '',
    //     age : '',
    //     sex : ''
    // }
    
    // 2. 执行 this.xxx = xxx
    this.name = name;
    this.age = age;
    this.sex = sex;
    
    // 3. 隐式返回 this 对象
    // return this;
}

var student = new Student('张三', 18, 'male'); // 用一个变量接收一下

模拟构造函数

function Person(name, height) {
    var that = {};
    that.name = name;
    that.height = height;
    return that;
}

// 只要加了 new 关键字,就会让上面的函数的返回值强制变成一个对象
var person = Person('张三', 180);
  • 对象实例化:new 一个对象
  • 对象实例化只有得到的每一个对象叫实例 – 对象 person 是 构造函数 Person 的一个实例

检测某个实例是不是某个构造函数所构造出来的 ⇒ 构造函数.prototype.isPrototypeOf(实例)

Person.prototype.isPrototypeOf(person); // true

返回某个实例的原型 ⇒ Object.getPrototypeOf(实例)

Object.getPrototypeOf(person); // 返回 person 的原型对象 --- {construcotr:...}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值