初级面向对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初级面向对象相关的知识,希望对你有一定的参考价值。
面向对象,看到这四个字很多人就会说了,“没有对象怎么面对”,我想说,没关系的,既然没有对象那咱们就来创建一个对象给自己。
面向对象是利用对象进行编程的一种思想(Object-oriented programming,缩写:OOP)
有句话说得好“类是对象的抽象, 对象是类的具体”,看到这句话不理解没关系,但至少我们知道了类是抽象的,对象是具体的。
看图你就能理解:
类(抽象) | 对象(具体) |
杯子 | 我的这个杯子 |
联想电脑 | 我的这台联想电脑 |
对象里有属性和方法
那如何创建一个对象呢?有以下几种方式
方式1: 使用new关键字
例如:var obj = new Object();//这样就创建了一个名为obj的对象
obj.name = "张三";//给对象添加属性
//给对象添加方法(函数)
obj.run = function(){
console.log("跑步...");
}
obj.run(); //调用函数
方式2:使用字面量的方式创建对象并赋值
var obj = {
name: "李四",
run: function(){
console.log("跑步......");
}
}
//打印属性
console.log(obj.name); //李四
console.log(obj["name"]); //李四
obj.run();//调用函数
但如果要创建很多个对象的话为了减少重复代码,对上述代码进行封装
也称:封装工厂函数
例如:
function student(name,age,gender){//封装一个函数
var obj = {};
obj.name = name;
obj.age = age;
obj.gender = gender;
}
调用函数生成对象:
var s1 = student(‘张三’,18,‘男’);
console.log(s1)//打印出s1得到一个对象
自定义构造函数
function Student(name, age){
this.name = name;
this.age = age;
}
var s1 = new Student("王铁锤", 18);
构造函数与普通函数的区别在于它们的调用方式不同
这种方式调用构造函数实际上会经历以下4个步骤:
- 创建一个新对象( 在内部隐式调用了new Object() );
- 将构造函数的作用域赋给新对象(把this绑定到实例对象);
- 执行构造函数中的代码(为这个新对象添加属性);
- 返回新对象。
那如何用代码来描述一个对象
比如描述一个人:
// 1、创建一个person构造函数
function Person(opt){
// 描述一个人
// 这个人有什么,能做什么
this.name = opt.name;
this.age = opt.age;
this.gender = opt.gender;
// 肤色
this.color = opt.color;
this.fat = opt.fat;
this.glasses = opt.glasses;
// 能做什么
this.eat = function(){
console.log(this.name + ‘是吃货‘);
}
this.sleep = function(){
console.log(this.name + ‘睡觉睡到自然醒‘);
}
this.coding = function(){
console.log(this.name + ‘说:不熬夜的程序猿不是好的吃货‘);
}
}
var p1 = new Person({name:‘老王‘,age:40,gender:‘男‘,color:‘黄色‘,fat:false,glasses:true});//传参数
console.log(p1);//打印出这个对象
p1.coding();//调用函数
this
this作为JS的关键字,有特殊的含义,代表了当前对象,而当前对象是谁,由函数执行时所处的环境来决定
this好比一句话, 出自不同人之口, 代表的人就不一样
如A和B吵架:
A对B说: “老子要砍死你! ” , 这里的老子指A
B对A说: “老子要弄死你! ”, 这里的老子指B
用new关键字执行:this指向生成的实例对象
普通函数执行:this指向调用函数的对象
用new关键字执行:this指向生成的实例对象
感觉有点偏题了,希望大家能看得懂,码农们继续加油吧!!
以上是关于初级面向对象的主要内容,如果未能解决你的问题,请参考以下文章