js 面向对象以及原型及原型链
时间:2019-09-03
本文章向大家介绍js 面向对象以及原型及原型链,主要包括js 面向对象以及原型及原型链使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
是一种编程思维
所有的程序中的参与的对象提取出来,给对象 设置不同的属性和方法
老师 小明 买豆浆
面向过程:
1,老师喊小明过来
2,小明过来
3,告诉小明去买豆浆
4,给你钱,告诉你记住找零钱
5,小明下楼到永和
6,小明排队
7,小明和营业小妹 沟通 买豆浆 给钱
8,营业员 收钱,找零 准备豆浆
9,小明等待
10,营业员给豆浆
11,小明拿豆浆 回来
12,给老师 零钱给老师
面向对象:
三个主体 老师 小明 和 营业员
老师:{
名字:"tony",
act1(){
xxxx
}
xxxx
xxxx
}
小明:{
}
营业员{
}
棋盘
面向对象优点:方便代码的管理,和封装 以及调用
面向过程
将程序 所有步骤:拆成一步一步
怎么将大象赛进冰箱
1,打开冰箱门
2,放进大象
3,关门
如何创建对象
1,字面量
var obj = {
属性:值,
属性2:值2,
方法:function(){
}
}
使用属性和方法
obj.属性名
obj.方法名
赋值
obj.属性名 = 值
obj.方法 = function(){}
2,系统构造函数 (创建对象) Object
var obj = new Object();
obj.属性=值
....
3,工厂函数创建对象
4,构造函数 创建对象
问题:
函数怎么调用:函数名()
另一种方法: new 函数名()
当new 一个函数会发生什么? 面试题
构造函数的缺点:
原型
构造函数有一个属性叫做 prototype 原型,属性就是对象(原型空间),可以将不同的对象的公共的属性和方法放到原型上,当我们new一个对象时,这个对象有一个属性 __proto__指向原型空间 的
只有构造函数时:
属性和方法定义在 构造函数中 通过this关键字定义 浪费内存
原型:
公共的属性和方法放到原型中 当我们new一个实例对象 原型中的属性和方法只会在内存中存储一份
实例对象中有一个属性 __proto__自动指向 他的构造函数的原型
原型上的属性和方法 可以直接通过 对象名.属性名得到
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
function Person(name,age){
this.name = name;
this.age = age;
}
// 原型
Person.prototype.act = function(){
alert(this.name+"吃饭");
}
var p1 = new Person("小明",16);
p1.act();
console.log(p1);
</script>
</body>
</html>
注意:
原型上的this指向也是 指向 实例对象的
总结:构造函数结合原型 一般会在构造函数上 定义属性 (理解变量),在原型中,定义方法(函数)
对象的constructor属性 得到实例对象的构造函数
instanceof 判断一个对象 是不是某个构造函数的的实例
实例对象.hasOwnProperty("属性") 判断一个属性 是不是实例对象自己的属性
原型链:
链:链式关系 一环扣一环
每个实例对象 有一个__proto__属性,指向它的构造函数的prototype属性
构造函数 往上也有构造函数 Function 构造函数的 __proto__指向 Function的prototype属性
....
这种层层 的链式关系 叫做原型链
面向对象的形式 写 选项卡:
对象 选项卡 Tab
属性: 变量 构造函数中定义
方法:切换方法 构造函数原型
原文地址:https://www.cnblogs.com/cxf1214/p/11456266.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android TV 焦点控制
- Kotlin学习日志(四)函数
- Kotlin学习日志(三)控制语句
- Kotlin学习日志(一)TextView、Button、Toast的使用
- Kotlin学习日志(二)数据类型
- Toast提示工具类
- RadioGroup+ViewPager +Fragment 制作APP主界面底部导航和左右滑动
- MD5加密工具类
- Kotlin修炼指南(四)
- Android Studio 安装APK在虚拟机时报 Installation failed due to: 'null' 解决
- 在Android Studio中使用Kotlin
- Day21.Python项目案例
- Day18.python文件/目录
- Kotlin学习日志(六)控件使用
- Android 天气APP(一)开发准备