js 面向对象编程oop, 构造函数

本文深入讲解面向对象编程(OOP)的基本概念,包括对象、成员、封装、继承、多态等特性,以及构造函数的使用方法,帮助初学者理解并掌握面向对象编程的核心思想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象:一组无序属性的集合

对象成员:属性和方法

面向对象:将需求抽象成一个对象,然后对其成员进行分析

面向对象三大特性

  • 封装:函数封装
  • 继承:js通过原型链继承
  • 多态:函数根据参数个数不同返回结果不同

OOP:面向对象编程(Object-Oriented Programming)本质上就是创建对象

构造函数:

  1. 就是一个普通函数,只不过可以用来创建对象而已;使用new操作符创建对象 var obj = new Animal();
  2. 构造函数名称习惯上使用首字母大写字母表示function Animal() {},以区别于其他函数
  3. 构造函数和普通函数的唯一区别在于调用方式的不同,任何函数只要通过new操作符调用,就可以成为一个构造函数;若没有通过new操作符调用,则该函数只是一个普通函数
  4. 使用new操作符创建的每一个实例都是一个独立的实例个体
  5. 如果构造函数内部返回原始类型数据( string, Boolean, null, undefined, symbol, number ),返回值无效,仍然是隐式返回this
  6. 若构造函数内部返回引用类型数据( array, object, function ),返回值会覆盖this
function Animal (name, desc) {
    console.log(this);
    this.name = name;
    this.desc = desc;
    return ;
}

 

通过new操作符调用,即将函数当做构造函数使用 ,this指向的构造函数实例本身

当做构造函数使用,cat是一个对象实例,函数Animal中的this作为创建实例对象
var cat = new Animal('cat', '小猫猫');
cat.tail = 'short';   给函数Animal中的this添加属性tail,属性值为short
console.log(cat);  输出cat的对象内容

浏览器控制台输出如图:

 

没有通过new操作符调用,即作为一个普通函数使用,this指向的window

没有使用new操作符调用函数,作为一个普通函数使用
var tiger = Animal('tiger', '老虎');
tiger.tail = 'none';  给tiger添加属性tail,属性值为none, 此处会报错
console.log(tiger);  在没有函数return返回值的情况下,输出为undefined

在浏览器控制台输出如图:

 

 在另一个对象的作用域中调用 ,this指向新建的对象o;

var o = new Object();
Animal.call(o, 'mouse', 'notail');  使用回调函数call,将Animal函数的this指向新建对象o,即修改执行环境

 在浏览器控制台输出如图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值