JavaScript:面向对象与原型

面向对象与原型
1. 创建对象
2. 创建正则表达式
3. 原型
4. 继承

1.普通方法创建对象

//普通创建对象
var box = new Object(); //创建对象
box.name = 'zjw';
box.age = 100;
box.run = function(){
    //this代表当前作用域下的对象。就是box,是Object实例化出来的对象。
    //this必须放在一个作用域下使用,
    return this.name+this.age+'在运动';
}

alert(box.run());

alert(this.name);//这个输出空,因为这个this代表的是window对象。

var  name='wjz';//在全局定义的变量数据window
alert(this.name);//这个输出空,因为这个this代表的是window对象。

JavaScript面向对象
ECMAScript有两种开发模式:过程化,面向对象
ECMAScript没有类的概念,因此他的面向对象和其他语言是有区别的。

2.工厂模式创建对象
为了解决多个类似对象的声明,使用工厂模式(集中解决大量对象实例化的方法)。
工厂模式必须有返回值,返回对象引用。

function createobject(name,age){
    var obj  = new Object();
    obj.name = name;
    obj.age = age;
    obj.run = function(){
        return this.name+this.age+"再跑";
    }
    return obj;//工厂模式必须有返回值,返回对象引用。
}

var box1 = createobject("Job",18);
var box2 = createobject("张三",3);
alert(box1.run());
alert(box2.run());

工厂模式解决了重复实例化的问题,但是存在识别问题。

3.构造函数创建对象

//构造函数模式,推荐写法。
//不需要返回对象引用
function Box(name,age){
    this.name = name ;
    this.age = age;
    this.run = function(){
        return this.name+this.age+"再跑";
    }
}

var box1 = new Box("水",1);

构造函数也是

原型
每个函数都有一个 prototype(原型)属性,这个属性是一个对象,它的用途是包含可以由特定类型的所有实例共享的属性和方法。
逻辑上可以这么理解:prototype通过调用构造函数而创建的那个对象的原型对象。使用原型的好处可以让所有对象实例共享它所包含的属性和方法。也就是说,不必在构造函数中定义对象信息,而是可以直接将这些信息添加到原型中。

function Box(){} //声明一个构造函数
Box.prototype.name='Lee'; //在原型里添加属性
Box.prototype.age=100;
Box.prototype.run=function(){ //在原型里添加方法
return this.name+this.age+'运行中...';
};

1、默认调用的是函数对象本身的属性或方法.
2、通过原型增加的属性或方法的确是存在的.
3、函数对象本身的属性或方法的优先级要高于原型的属性或方法.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值