对象学习笔记

//定义对象:两种方式一样
let obj1 = {name:'张三'};
let obj2 = new Object();
obj1.name = '张三';

let obj = { username: "wangwu", age: 23 }
let objnew = obj;
obj = { address: "北京海淀区西三环", age: 39 }
console.log("obj:", obj); //{ address: "北京海淀区西三环", age: 39 }
console.log("obj2:", objnew) //{ username: "wangwu", age: 23 }

增加或修改原型对象的属性或方法后,所有的实例或叫对象可以立即访问的到,但是创建实例后在覆盖原型除外; 

 栈:运行时执行方法会入栈,方法执行结束后会出栈

/*
    1、QQLisi.__proto__.show() 表示该实例对象的私有属性__proto__
去访问构造它的构造函数的原型对象中的show方法。

    2、QQLisi.show() 表示该实例对象首先会从自身上进行查找,
去尝试调用show()这个方法,如果没有找到,则会通过__ptoto__去访问上一层构造它的原型对象,
如果一路查找直到遇见 Object.prototype 都没发现该方法,则会停止查找。
*/

function QQUsers(QQNo_, QQAge_, QQMark_) { //构造函数
  this.QQNo = QQNo_ //QQ号
  this.QQAge = QQAge_ //Q龄
  this.QQMark = QQMark_ //QQ标签
}

QQUsers.prototype.commonfriends = [
  '骑驴看海',
  '大漠上的英雄',
  '坚实的果子',
  '小草',
]
QQUsers.prototype.show = function () {
  console.log(`QQ号:${this.QQNo},QQ龄:${this.QQAge},QQ标注:${this.QQMark}`)
  console.log(`共同的好友是:${this.commonfriends}`)
}

let QQZhangSan = new QQUsers('37834522', 15, '张三')  //实例对象
let QQLisi = new QQUsers('30424232', 10, '李四')

QQLisi.show()
QQLisi.__proto__.show()

// QQ号:30424232,QQ龄:10,QQ标注:李四
// 共同的好友是:骑驴看海,大漠上的英雄,坚实的果子,小草
// QQ号:undefined,QQ龄:undefined,QQ标注:undefined
// 共同的好友是:骑驴看海,大漠上的英雄,坚实的果子,小草
function Animal(name){ //Animal 构造函数
     this.name=name;
 }
 var dog=new Animal('dog'); //dog是实例对象

 console.log(dog.constructor==Animal);//true
 console.log(dog instanceof Animal);//true
 console.log(Animal.prototype == dog.__proto__) //true

/*
    构造函数可以实例化对象,其中有一个属性叫prototype,是构造函数的原型对象,构造函数的原型对象prototype中有一个constructor构造器,这个构造器指向的就是自己所在的原型对象所在的构造函数

    实例对象的原型对象(__ proto__)指向的是该构造函数的原型对象,构造函数的原型对象prototype中的方法是可以被实例对象直接访问的

原型:
    实例对象中有__proto__这个属性,叫原型,也是一个对象,可以叫原型对象
    这个属性是给浏览器使用的,不是标准的属性

    构造函数中有prototype这个属性,也是原型对象,这个属性是给程序员使用的,是标准的属性

    由于实例对象是通过构造函数来创建的,构造函数中有原型对象prototype,因此实例对象的__proto__指向了构造函数的原型对象prototype
*/

function test(){}

test.__proto__ === Function.prototype
Function.prototype.apply === test.apply
Function.prototype !== test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值