返回介绍

第八课时

发布于 2024-09-07 17:38:19 字数 2693 浏览 0 评论 0 收藏 0

上节回顾:

1.object 对象

  • new 关键字代表的是新开辟一块内存空间
  • 没有被引用的内存空间,会在适当的时候被销毁
    • 两句代码含义等同
    • var person = new Object();
    • var person = {};
    • 访问对象的属性除了用 对象引用属性 key 以外,还可以使用对象引用 [属性 key]

2.面向对象的程序设计

  • a. function 构造器
    • 共同点:
      • 动态创建一块内存空间,闭包
    • 不同点:
      • 函数调用是没有办法拿到空间的地址的,而且这块地址是一块临时地址,执行完函数之后,就会销毁
      • new 开辟内存空间,把这块空间的地址返回,这块空间就有可能长期的被引用
  • b. prototype 原型
    • 通过原型使通过同样一个构造器所 new (创建)出来的对象具有相同的属性和行为
    • prototype 本质就是一个对象
  • c. foreach
  • c. this
  • d.继承

知识点:

1.prototype 内存解析

  • prototype 是原型,是一块所有对应构造器创建的对象都共享的内存空间
  • 在面向对象设计程序的时候,属性应该是对应的空间的,而功能应该是 prototype 公共空间的

2.通过 prototype 扩展功能

  • 所有的构造器都是继承于 Object 构造器的,因此只要 Object 的原型里有的功能,所有的对象都有
//多个对象的构造 以及 多个对象之间如何建立联系
function Student(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;

}
function Bingqilin(name){
this.name = name;
}
function Game(name){
this.name = name;
}
function Hour(time){
this.time = time;
}
Student.prototype = {

eat:function(b){
alert(this.name+"喜欢吃"+b.name);
},
mess:function(){
alert(this.name+"的信息:"+this.age+','+this.sex);
},
sleep:function(h){
alert(this.name+"每天睡,"+h.time+'小时');
},
work:function(h){
alert(this.name+"每天工作,"+h.time+'小时');
},
like:function(g){
alert(this.name+"喜欢打,"+g.name);
}

}
var s = new Student("小明",22,"男");

var b = new Bingqilin("黑色的冰淇淋");
s.eat(b);//小明喜欢吃黑色的冰淇淋

var g = new Game("英雄联盟");
s.like(g);//把对象的地址发送给 like 的参数即可访问构造函数 Game 的 name 属性

var h = new Hour(10);
s.sleep(h);
s.work(h);

一些内存图示

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文