js面向对象的一些初级知识总结~~

    javascript作为一门解释性脚本语言,有着其独特的魅力.既具有函数编程的特性,又具有面向对象的特征.以前的开发中,大多是使用了javascript的函数式编程,最近,发现其的面向对象也有一定的优势,在较为复杂的插件构建中,效果会很明显.

    其实,本质上javascript包括三部分,一部分是DOM编程,操作页面中的元素,一部分是BOM编程,获取浏览器的一些性能特征,最后,一部分也就是其核心,对ECMA-262规则的实现.现在,总结一下面向对象的学习.

    面向对象之一封装:

    原生形式的封装:

   创建了一个person的对象,这种方式比较繁琐.

var person = {
   name:'小兰',
   age : 23
};

alert(person.name);
     所以有了改进方式
var Person = function(name,age){
     return {
      name:name,
      age : age
     }
}
//创建了一个Person的类

//创建一个Person对象

var xiaoming = Person('小明',23);

alert(xiaoming.name);

    构造函数创建对象

  

var Person = function(name,age)
{
    this.name = name;
    this.age = age;
    eat = function(){
        alert('情人节怎么样勒?');
   }
 };

var xiaohong = new Person('小红',23);
alert(xiaohong.name);

var xiaolan = new Person('小兰',25);
alert(xiaolan.name);

但是,有个问题eat方法不属于Person这个类公有,每次创建对象还必须 为其开辟内存空间

alert(xiaohong.prototype.eat == xiaolan.prototype.eat)  false

   

 原型模式创建    每个js对象都有一个对其原型的内部引用

var Person = function(name,age)
{
    this.name = name;
    this.age = age;
};

prototype:原型上加的是对象不变的属性,和方法
Person.prototype.eat = function(){
   alert('this is one day~');
};

var beili = new Person('贝利',34);

var mingren = new Person('鸣人',23);


alert(beili.prototype.eat == mingren.prototype.eat) true

封装完成.

new 关键词,解释:js中使用new时会创建一个空对象,作为参数传给function,如果

function没有return时就会返回this,所以不要在生成实例时,使用return,这就是''this关键字

关联于其所在的作用域'

in 关键词 用于查看对象中的变量;

for(var prop in Person)
{
   alert(prop);
}

//结果:
name age eat
  这是js中的类和对象,对于js面向对象的封装,有个朋友推荐使用闭包~~不是很清楚!!

转载于:https://my.oschina.net/KangL/blog/110089

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值