共计 3200 个字符,预计需要花费 8 分钟才能阅读完成。
JavaScript 是世界上最风行的脚本语言。JavaScript 是属于 web 的语言,它实用于 PC、笔记本电脑、平板电脑和移动电话。JavaScript 被设计为向 HTML 页面减少交互性。许多 HTML 开发者都不是程序员,然而 JavaScript 却领有非常简单的语法。简直每个人都有能力将小的 JavaScript 片段增加到网页中。上面给大家分享下 JavaScript 教程全套视频合集:构造函数内容解说。
面向对象
首先,咱们要明确,面向对象不是语法,是一个思维,是一种 编程模式。
面向:面(脸),向(朝着)
面向过程:脸朝着过程 =》关注着过程的编程模式
面向对象:脸朝着对象 =》关注着对象的编程模式
实现一个成果
在面向过程的时候,咱们要关注每一个元素,每一个元素之间的关系,程序,。。。
在面向过程的时候,咱们要关注的就是找到一个对象来帮我做这个事件,我期待后果
例子:我要吃面条
面向过程
用多少面粉
用多少水
怎么和面
怎么切面条
做开水
煮面
吃面
面向对象
找到一个面馆
叫一碗面
等着吃
面向对象就是对面向过程的封装
咱们以前的编程思维是,每一个性能,都依照需要一步一步的逐渐实现
咱们当前的编程思维是,每一个性能,都先发明一个 面馆,这个 面馆 能帮咱们作出一个 面(实现这个性能的对象),而后用 面馆 发明出一个 面,咱们只有等到后果就好了
插个小音讯,也不便想学习入行成为程序员的同学,在文章下方留言即可试听课程外加支付千锋 HTML5、UI 交互设计、PHP、Java+ 云数据、大数据开发、VR/AR/Unity 游戏开发、Python 人工智能、Linux 云计算、全栈软件测试、网络安全等全副的视频学习教程。
创建对象的形式
因为面向对象就是一个找到对象的过程
所以咱们先要理解如何创立一个对象
调用零碎内置的构造函数创建对象
js 给咱们内置了一个 Object 构造函数
这个构造函数就是用来发明对象的
当 构造函数 和 new 关键字连用的时候,就能够为咱们发明出一个对象
因为 js 是一个动静的语言,那么咱们就能够动静的向对象中增加成员了
// 就能失去一个空对象
var o1 = new Object()
// 失常操作对象
o1.name = ‘Jack’
o1.age = 18
o1.gender = ‘ 男 ’
字面量的形式创立一个对象
间接应用字面量的模式,也就是间接写 {}
能够在写的时候就增加好成员,也能够动静的增加
// 字面量形式创建对象
var o1 = {
name: ‘Jack’,
age: 18,
gender: ‘ 男 ’
}
// 再来一个
var o2 = {}
o2.name = ‘Rose’
o2.age = 20
o2.gender = ‘ 女 ’
应用工厂函数的形式创建对象
先书写一个工厂函数
这个工厂函数外面能够发明出一个对象,并且给对象增加一些属性,还能把对象返回
应用这个工厂函数发明对象
// 1. 先创立一个工厂函数
function createObj() {
// 手动创立一个对象
var obj = new Object()
// 手动的向对象中增加成员
obj.name = ‘Jack’
obj.age = 18
obj.gender = ‘ 男 ’
// 手动返回一个对象
return obj
}
// 2. 应用这个工厂函数创建对象
var o1 = createObj()
var o2 = createObj()
应用自定义构造函数创建对象
工厂函数须要经验三个步骤
手动创建对象
手动增加成员
手动返回对象
构造函数会比工厂函数简略一下
主动创建对象
手动增加成员
主动返回对象
先书写一个构造函数
在构造函数外向对象增加一些成员
应用这个构造函数发明一个对象(和 new 连用)
构造函数能够创建对象,并且创立一个带有属性和办法的对象
面向对象就是要想方法找到一个有属性和办法的对象
面向对象就是咱们本人制作 构造函数 的过程
// 1. 先发明一个构造函数
function Person(name, gender) {
this.age = 18
this.name = name
this.gender = gender
}
// 2. 应用构造函数创建对象
var p1 = new Person(‘Jack’, ‘man’)
var p2 = new Person(‘Rose’, ‘woman’)
构造函数详解
咱们理解了对象的创立形式
咱们的面向对象就是要么能间接失去一个对象
要么就弄出一个能发明对象的货色,咱们本人发明对象
咱们的构造函数就能发明对象,所以接下来咱们就具体聊聊 构造函数
构造函数的根本应用
和一般函数一样,只不过 调用的时候要和 new 连用,不然就是一个一般函数调用
function Person() {}
var o1 = new Person() // 能失去一个空对象
var o2 = Person() // 什么也得不到,这个就是一般函数调用
留神:不写 new 的时候就是一般函数调用,没有发明对象的能力
首字母大写
function person() {}
var o1 = new person() // 能失去一个对象
function Person() {}
var o2 = new Person() // 能失去一个对象
留神:首字母不大写,只有和 new 连用,就有发明对象的能力
当调用的时候如果不须要传递参数能够不写 (),倡议都写上
function Person() {}
var o1 = new Person() // 能失去一个空对象
var o2 = new Person // 能失去一个空对象
留神:如果不须要传递参数,那么能够不写(),如果传递参数就必须写
构造函数外部的 this,因为和 new 连用的关系,是指向以后实例对象的
function Person() {
console.log(this)
}
var o1 = new Person() // 本次调用的时候,this => o1
var o2 = new Person() // 本次调用的时候,this => o2
留神:每次 new 的时候,函数外部的 this 都是指向以后这次的实例化对象
因为构造函数会主动返回一个对象,所以构造函数外部不要写 return
你如果 return 一个根本数据类型,那么写了没有意义
如果你 return 一个援用数据类型,那么构造函数自身的意义就没有了
应用构造函数创立一个对象
咱们在应用构造函数的时候,能够通过一些代码和内容来向以后的对象中增加一些内容
function Person() {
this.name = ‘Jack’
this.age = 18
}
var o1 = new Person()
var o2 = new Person()
咱们失去的两个对象外面都有本人的成员 name 和 age
咱们在写构造函数的时候,是不是也能够增加一些办法进去呢?
function Person() {
this.name = ‘Jack’
this.age = 18
this.sayHi = function () {
console.log(‘hello constructor’)
}
}
var o1 = new Person()
var o2 = new Person()
显然是能够的,咱们的到的两个对象中都有 sayHi 这个函数
也都能够失常调用
然而这样好不好呢?毛病在哪里?
function Person() {
this.name = ‘Jack’
this.age = 18
this.sayHi = function () {
console.log(‘hello constructor’)
}
}
// 第一次 new 的时候,Person 这个函数要执行一遍
// 执行一遍就会发明一个新的函数,并且把函数地址赋值给 this.sayHi
var o1 = new Person()
// 第二次 new 的时候,Person 这个函数要执行一遍
// 执行一遍就会发明一个新的函数,并且把函数地址赋值给 this.sayHi
var o2 = new Person()
这样的话,那么咱们两个对象内的 sayHi 函数就是一个代码一摸一样,性能一摸一样
然而是两个空间函数,占用两个内存空间
也就是说 o1.sayHi 是一个地址,o2.sayHi 是一个地址
所以咱们执行 console.log(o1 === o2.sayHi) 的到的后果是 false
毛病:一摸一样的函数呈现了两次,占用了两个空间地址