js面向对象

一、面向对象:不注重过程,注重这件事有几个对象在参与

三大特性:1、封装性,2、继承性,3、多态性

二、对象的创建

var obj = {}

var pbj = new Object()

三、工厂函数

创建多个对象之后,如果发现多个对象的结构是一致的,多个对象的创建代码就是重复的 - 使用循环没办法处理,只能使用函数来进行处理

工厂函数 - 批量制造对象的工厂(工厂知道对象的时候,会比使用字面量方式创建对象更好)

function createObj(name,age,sex) { var obj2 = { name, age. sex } return obj2; } var obj = createObj('张三',12,'男') var obj1 = createObj('李四',13,'女') var obj2 = createObj('王五',15,'男')

四、构造函数

1、概念:任何函数都可以通过new来创建对象 - 函数是js中一等公民

当一个函数be被new来创建对象使用的时候 - 这个函数就被叫做构造函数了

2、特性

(1)构造函数的首字母都是大写的

(2)构造函数在被new的时候是可以传参数的 - 但如果不传参数的时候,new的时候构造函数的后面就可以省略小括号

3、new关键字

(1)悄悄的在构造函数中创建一个空对象

(2)悄悄的讲这个空对象赋值给this

(3)执行函数中的代码

(4)悄悄的讲这个空对象return出去

五、原型

任何对象天生自带属性 __proto__ ,值是一个对象,对象就是原型/原型对象

原型上的属性和方法默认能被对象使用 - 原型(父) 对象(子)

任何构造函数天生自带属性prototype 值也是原型

通过原型解决问题:

面向对象:

创建对象:使用自定义构造函数

添加属性:在构造函数中添加

添加方法:将方法添加在构造函数的原型上

function Person(name,age,sex){     this.name = name;     this.age = age;     this.sex = sex; } // 通过构造函数给原型添加方法 Person.prototype.eat = function(){     console.log("能吃"); } var p1 = new Person('张三',12,'男') var p2 = new Person('李四',13,'女') // p1的原型和p2的原型是不是同一个 // console.log( p1.__proto__ === p2.__proto__ ); p1.eat() p2.eat() console.log( p1.eat === p2.eat );

挡在访问一个对象的属性时,先在当前对象上找是否有这个属性,如果有,就找到了,如果没有就去对象的原型上找,在对象的原型上找到了,就使用,如果对象的原型上没有找到,到对象的原型的原型上找......直到Object对应的原型上,都没有找到的话,就返回undefined

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值