JavaScript个人笔记:面向对象设计一(封装及prototype)

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

/var key = 'sex';
//console.log(person[key]);//key
person  = {
    name : "张三",
    sex : "性别",
    age: "54",
    height : "180",
    eat:function(){
        console.log(this.name+'正在吃饭');
        console.log('到了晚上');
        return '睡觉';
    }
};
//遍历[迭代]对象
var b;
for(var a in person){
    b = person[a];
    if(typeof b == 'number'){
        console.log(a+':'+b);
    }
}

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

//普通函数
function eat(){
    console.log('就知道吃');
    return "eat";
}
var res = eat();
console.log(res);
//构造器函数 封装
function Person(name,age){
    this.name = name;
    this.age = age;
}
Person.prototype = {
    name:'谁啊',
    age:'15',
    eat:function(){console.log('eat');},
    sleep:function(){console.log('sleep');},
}
var p1 = new Person('臧三','14');
var p2 = new Person('里欧斯','55');
p1.eat();
p2.eat();
console.log(p1.name);
console.log(p1.name);

function Dog(name){
    this.name = name;
}
Dog.prototype = {
    name : '流浪狗',
    bark : function(){
        console.log("叫唤");
    }
}
var dog = new Dog('美丽');
dog.bark();

//小头爸爸牵着大头儿子(的手)去吃饭
//吃完饭之后小头爸爸背着大头儿子回家

//面向对象程序设计的过程! 封装
//1:找对象 小头爸爸 大头儿子 饭
//2:抽象(类,构造器)
//3:创建对象并且建立关系(操作对象)

function Person(name){
    this.name = name;
}
Person.prototype = {
    eat : function(rice){
        console.log(this.name+"正在吃"+rice.name);
    }
    getHand : function(person){
        console.log(this.name+"牵着"+person.name+"的手");
    }
}
function Rice(name){
    this.name = name;
}
var x = new Person('小头爸爸');
var d = new Person('大头儿子');
x.getHand (d);
var df = new Rice('蛋炒饭');
var xf = new Rice('炒饭');
x.eat(df);
d.eat(xf);

这里写图片描述
1.prototype内存解析
prototype是原型,是一块所有对应构造器创建的对象都共享的内存空间。
在面向对象涉及程序的时候,属性应该是对应的空间的,而功能应该是prototype公共空间的。
2.通过prototype扩展功能
所有的构造器都是继承于Object构造器的,因此只要Object的原型里有的功能,所有的对象都有。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值