云笔记项目-补充JS面向对象编程基础知识
简单介绍:
此部分知识为在做云笔记项目中补充,因为云笔记项目中涉及到前端js,里面写了很多js脚本,用到了创建js属性和方法,在js中直接声明的属性和方法最终都会变成window的对象,即其成为了全局变量,可以在控制台直接调用。
(1)如何创建js对象
1 JSON语法声明对象(直接量声明语法)-->var obj={}
2 使用Object创建对象 -->var obj=new Object()
(2) js对象可以后期添加属性
1 var obj={}; obj.name="tom"; 这样可以使用obj.name访问其属性
2 var obj1=new Object(); obj1.name="tom"; 这样也可以访问obj.name、
(3)js对象特点:
1.new Object()和JSON语法创建的对象没有差别,JSON语法简洁方便,更加容易使用。
2.对象可以随时添加属性,对象.属性=值
3.不存在的属性,值是undefined,undefined 相当如false,利用这点可以检查属性是否存在,if(!obj.age){ console.log("没有age属性"); }或者if(obj.age){console.log("年龄"+obj.age);}
4.可以随时删除对象的属性 delete 对象.属性,如 delete obj.age;,删除成功后返回true。
5.JS Object底层本质上是一个散列表,为对象添加属性,本质上是添加了key和value,key是属性名,value是属性值。访问对象属性,本质上是get(key)。删除对象属性,本质上是delete(key)。
(4)JS对象的方法
JS对象的方法,本质上还是一个属性,是一个属性值为函数对象的属性。obj.who=function(){console.log(this.name);}obj.who()为调用方法,obj.who为调用方法属性的值,将打印方法到控制台。
可以像属性一样删除方法, delete obj.who; 删除后再次调用方法执行会报错没有方法。
可以修改属性值,如果属性值为方法,也可以修改方法。obj.name='tom', obj.name='Jerry'; obj.name被覆盖了,成了Jerry。obj.who=function(){console.log(this.name);},obj.who=function(){console.log('hello world');}obj.who方法被覆盖了,执行后的结果为hello world。云笔记项目中的alert方法,就被覆盖了,里面重新写了一个方法覆盖了原生的alert方法。
JS方法中没有重载!!在做云笔记的时候,当时还差点想重载加载笔记列表的方法,修改参数列表,企图实现方法重载,原来跟java不一样,是不能重载的。
obj.add=function(a,b){return a+b},obj.add=function(a,b,c){return a+b+c},这样方法被覆盖了,只保留第二个方法。如果调用add(1,2),第三个参数发现没有,导致第三个参数为undefined,导致整个结果为NAN,如果写成add(1,2,3,4),第四个参数没用上,也能执行出结果,JS有点灵活。
(5)使用JSON直接声明属性和方法
var obj={name:'tom',age:28,who:function(){console.log('this.name')}};
(6)默认的变量和函数
在网页中直接声明的变量和函数是window对象的属性和方法,即全局变量,如云笔记项目中声明的noteTemplate,notebookTemplate等,都是window的属性,里面也写了很多方法,发现也成了window的方法,控制台可以直接打window后能弹出
调用window.alert();方法直接弹出重写后的提示。
补充:
(1)JS对象没有封装性可言,JS没有面向对象的三大特性,继承多态和封装,Javascript不是面向对象的语言。
(2)JS中所有的方法都有返回值,如果有return值就是return的值,没有就默认为undefined
转载于:https://www.cnblogs.com/youngchaolin/p/10502425.html
云笔记项目-补充JS面向对象编程基础知识相关推荐
- js面向对象编程基础
js面向对象 文章目录 js面向对象 对象的引用 原型和原型链 系统对象与包装对象 面向对象相关语法 对象的引用 类型比较方式 对象比较时,值跟引用地址都相同时才相等. 类型赋值方式 ...
- java面向对象编程基础
java面向对象编程基础 前言:什么是java 是咖啡飘香的清晨 - 是斯坦福校园意浓情深 - 是James的思想睿智 是剁手党双十一挥舞的利刃 是大数据云计算驰骋的平台 - 是ATM上吐出的钞票 - ...
- 16第一章 ASP.Net编程基础知识
第一章 ASP.Net编程基础知识 第一章 ASP.Net编程基础知识 本章首先介绍用ASP.Net技术编制服务器端动态网页所需的网络和HTML标记语言方面的有关知识.然后 ...
- [.net 面向对象编程基础] (20) LINQ使用
[.net 面向对象编程基础] (20) LINQ使用 通过上节LINQ的基础知识的学习,我们可以开始使用LINQ来进行内存数据的查询了,我们上节说了LINQ的定义为:Language Integr ...
- JS面向对象编程(OOP)
什么是JS面向对象编程(OOP)? 用对象的思想去写代码,就是面向对象编程. 上面这张图就是一个对象,紫色部分就是车的属性,黄色部分就是修改车的方法: 把他们集合到一个构造函数内,就是这样的 func ...
- 学习编程基础知识,进阶成为更优秀的程序员
"脚本小子"常常从某些网站上复制脚本代码,然后到处粘贴,却并不明白其中的方法与原理 当你看到编程语言编进教材的时候,看到一个文科生也在编写Python程序进行数据分析的时候,你 ...
- Java 网络编程基础知识
Java 网络编程基础知识 基础概念 计算机网络的基本概念 网络:多台计算机使用网络设备互联在一起,计算机之间可以进行通信,这样就组成了一个计算机网络. 网络设备:集线器(HUB),路由器,交 ...
- javascript:面向对象编程基础:多态
js的重载和重写(覆写): 重载的意思是,"同一个名字的函数(注意这里包括函数)或方法可以有多个实现,它们依靠参数的类型和(或)参数的个数来区分识别". 而重写(覆盖)的意思是,& ...
- Day08 - 面向对象编程基础
面向对象编程基础 活在当下的程序员应该都听过"面向对象编程"一词,也经常有人问能不能用一句话解释下什么是"面向对象编程",我们先来看看比较正式的说法. 把一组数 ...
最新文章
- ISA Server 2006的CARP与NLB的构建
- 如何更高效的管理原生微服务应用
- matlab 将矩阵A写入文件
- 5G 信令流程 — 5GS 的 gNB 切换(Xn/N2 Handover)管理
- 深度解析KGDB调试Linux模块和内核
- 毕业后年薪40万的专业成热门!125个岗位抢100个求职者
- 网络:forward和redirect的区别
- 函数_方法_的四种调用方式
- php截取字符串,带中文,多余的省略号代替
- matlab红色爱心,心形图的matlab实现
- java socket小游戏_Java Socket如何实现猜数字小游戏 Java Socket实现猜数字小游戏代码示例...
- mimic-iii数据库_财务会计应用程序数据库III:完成基础结构
- 苹果手机Windows平台投屏神器airplayer,方便的使用苹果手机投屏演示
- python-for x in range (注意要点、细节)
- JAVA实现图片加水印及Base64图片字符串加水印
- 从零开始学 Python 之基础篇
- 基于三维卷积网络的时空特征学习
- 世界上最美的晚秋,美过油画,令人叫绝!
- 无敌破坏王2:大闹互联网在线观看
- #ORA-12547: TNS: 丢失连接
热门文章
- mac homebrew
- IOS开发-关于代码管理工具之SVN
- 缓冲区溢出(buffer overflow)机理分析
- 用 git 保存空目录
- android怎么将editext的文本,android – 如何将文本添加到editext
- wincc 服务器共享文件夹,wincc共享文件夹Simatic Shell中项目的互连是什么意思-工业支持中心-西门子中国...
- php解析doc试卷,PHP试题(卷)带答案解析.doc
- 【云上技术】中大型规模企业如何部署多数据中心?
- 如何从 0 到 1 开发 PyFlink API 作业
- @新金融人,点击翻开未来金融新画卷