js面向对象怎么理解
js面向对象怎么理解
<一>、
认识对象。首先要认识对象:在编程中,对象(object)是具体的某一个实例,唯一的某一个个体。如:电脑就是一个统称,而你面前的这一台电脑就是对象。而电脑的统称在编程中叫做类,概念就是:具有一类相同特征事物的抽象概念。在js中只有对象的概念。没有类的概念,在ECMA6中必须加回来。
对象的语法:(创建对象)
var obj1 = new Object();
var obj2 = Object();
var obj3 = {};
<二>、
在js中面向对象的编程思想是什么呢?直接将生活逻辑映射到我们的编程中。1.分析应用题里的实体。2.分析实体的属性和性能。3.实体之间相互作用得出结果。
<三>、
对象:既可以存储数据,又可以存储函数的结构。
<四>、
用面向对象创建一个人的方法:
var person = new Object();
person.name = "blue";
person.sex = "男";
person.showName = function(){
alert("我的名字叫:" + this.name);
}
person.showSex = function(){
alert("我的性别是" + this.sex + "的");
}
一下是封装函数创造一个人,也叫作使用new构造函数(本质上是构造对象),在JS中的构造函数充当的角色是类的存在。
function createPerson(name, sex){
var obj = new Object();
obj.name = name;
obj.sex = sex;
obj.showName = function(){
alert("我的名字叫" + this.name);
}
obj.showSex = function(){
alert("我的性别是" + this.sex + "的");
}
return obj;
}
var p1 = createPerson("blue", "男");
<五>、
继承和多态。在JS中一切皆对象。
继承:从父一级继承到的属性和方法。
1. 原型链继承 继承方法
for(funcName in Person.prototype){
Worker.prototype[funcName] = Person.prototype[funcName];
}
在任何函数上都有一个叫做prototype原型的属性,他是一个对象,如果我们将函数添加给某一个可以创建对象的函数的原型prototype,该函数共享。
2.Object.create 根据原对象,生成一个新对象
Worker.prototype = Object.create(Person.prototype);
3、直接通过调用构造函数继承
worker.prototype = new Person();
多态:我自己拓展和重写的属性和方法。
function Person(name, sex){
this.name = name;
this.sex = sex;
}
Person.prototype.showName = function(){
alert(`我的名字是:` + this.name);
}
Person.prototype.showSex = function(){
alert(`我的性别是:` + this.sex);
}
function Worker(name, sex, job){
Person.call(this, name, sex);
this.job = job;
}
Worker.prototype.showJob = function(){
alert(`我的工作是` + this.job);
}
var w1 = new Worker("red", "女", "画家");
w1.showName();
w1.showSex();
w1.showJob();
<六>、
满足继承、封装、多态的特点叫做面向对象。
理解起来就是:面向对象是一种编程思想,而我们要进行面向对象编程,就必须用到类(ECMA6之前,没有类,用构造函数充当类的存在)和对象语法实现,最终实现的面向对象的代码,拥有继承封装多态的特点。
js面向对象怎么理解的更多相关文章
- js面向对象的理解
ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP).面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是,ECMAScrip ...
- JS面向对象设计-理解对象
不同于其他面向对象语言(OO,Object-Oriented),JS的ECMAScript没有类的概念, 它把对象定义为"无序属性(基本值.对象.函数)的集合",类似于散列表. 每 ...
- javascript面向对象的理解(一)
第一次在园子发文: 关于js面向对象的理解: 工厂方式是什么?构造函数是什么?原形链?对象的引用? 1.对象是什么? 在js接触的比较多的就是对象了,比如: var arr = []; arr.num ...
- 带你一分钟理解闭包--js面向对象编程
上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...
- 新手如何理解JS面向对象开发?
今天有时间讲讲我对面向对象的理解跟看法,尽量用通俗的语言来表达,多多指教! 如今前端开发已经越来越火了,对于前端开发的要求也是越来越高了,在面试中,经常有面试官会问:你对JS面向对象熟悉吗? 其实,也 ...
- js面向对象理解
js面向对象理解 ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP).面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是, ...
- 简单粗暴地理解js原型链–js面向对象编程
简单粗暴地理解js原型链–js面向对象编程 作者:茄果 链接:http://www.cnblogs.com/qieguo/archive/2016/05/03/5451626.html 原型链理解起来 ...
- JS面向对象编程(进阶理解)
JS 面向对象编程 如何创建JS对象 JSON语法声明对象(直接量声明对象) var obj = {}; 使用 Object 创建对象 var obj = new Object(); JS对象可以后期 ...
- js面向对象学习 - 对象概念及创建对象
原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...
随机推荐
- Nginx 十大优化 与 防盗链
Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Ngin ...
- Cacti被监控机器 配置 snmp协议
SNMP(Simple Network Management Protocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理. snmpd.conf的 ...
- Python应用——自定义排序全套方案
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天的这篇文章和大家聊聊Python当中的排序,和很多高级语言一样,Python封装了成熟的排序函数.我们只需要调用内部的sort函数,就可 ...
- Day17-18前端学习之路——Javascript事件
用户在某个元素上点击鼠标或悬停光标. 用户在键盘中按下某个按键. 用户调整浏览器的大小或者关闭浏览器窗口. 一个网页停止加载. 提交表单. 播放.暂停.关闭视频. 发生错误. 更多事件:https:/ ...
- .net 微服务实践
l 前言 本文记录了我的一次.net core 微服务架构实践经验,以及所用到的技术 l 优点 每个服务聚焦于一块业务,无论在开发阶段或是部署阶段都是独立的,更适合被各个小团队开发维护,团队对服务 ...
- linux的分区和文件系统
一.分区类型 主分区 总共最多能分四个 扩展分区 只能有一个,也算做主分区的一种,也就是说主分区加扩展分区最多有4个. 但是扩展分区不能存储数据和格式化,必须在划分成逻辑分区才能使用. 逻辑分区 逻辑 ...
- ID生成器之——别人家的方案and自家的方案
“叮咚,叮咚……”,微信提示音一声接一声,声音是那么的频繁,有妖气,待俺去看一看. 这天刚吃完午饭,打开微信,发现我们的技术讨论组里有 100 多条未读消息,心想,是不是系统出问题了?怎么消息那么频繁 ...
- Android中通过Java代码实现ScrollView滚动视图-以歌词滚动为例
场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...
- leetcode-简单-栈-有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被 ...
- numpy 消除Futurewarning
numpy版本过高 1.查看numpy版本 import numpy as np np.__version__ 2.卸载numpy sudo pip3 uninstall numpy 3.安装较低版本 ...