web前端学习笔记------JS面向对象初级

基本概念

对象:对象就是一个整体,对外提供一个整体。

面向对象:使用对象时,只关注对象提供的功能,不关注其内部的细节。

三个特点(类C++):封装、继承、多态

一些概念区别

1、方法与函数

方法:obj.fn = function(){}

函数:function fn(){}

其中函数 function fn(){} 相当于 window.fn = function(){}

2、类与对象

类:不具备实际的功能,只能用来构造对象

对象:真正有功能的东西,被类给构造出来的

构造函数(工厂方式)

以person为对象举例 (有两个属性 name sex)

 1     <script>
 2         function CreatePerson(name , sex){
 3             var obj = new Object();
 4
 5             //添加属性
 6             obj.name = name;
 7             obj.sex = sex;
 8
 9             //添加方法
10             obj.showName = function () {
11                 alert(this.name);
12             };
13             obj.showSex = function () {
14                 alert(this.sex);
15             };
16             return obj;
17         }
18
19         var p1 = CreatePerson(‘leo‘ , ‘male‘);
20         var p2 = CreatePerson(‘shawn‘ , ‘male‘);
21         p1.showName();
22         p1.showSex();
23
24         alert(p1.showName == p2.showName);
25     </script>

以这样的方式来构造对象会有两个问题:

1、没有用到new方法

2、每个被创建的对象都有一套自己的方法(例如上述p1.showName()、p2.showName()),而这些方法的实现是一模一样的,这样就造成了资源的极度浪费

解决方案

针对第一个问题,做出的改进如下

 1         function CreatePerson(name , sex){
 2
 3             //相当于这边有
 4             // var this = new Object();
 5             //添加属性
 6             this.name = name;
 7             this.sex = sex;
 8
 9             //添加方法
10             this.showName = function () {
11                 alert(this.name);
12             };
13             this.showSex = function () {
14                 alert(this.sex);
15             };
16             //这边有return this;
17         }

针对第二个问题,使用prototype(原型),类似于CSS中的class,可以给一堆对象加上相同的属性或方法,主要是用来添加一些系统不支持的方法或函数

 1    <script>
 2         function CreatePerson(name , sex){
 3             //添加属性
 4             this.name = name;
 5             this.sex = sex;
 6         }
 7         //添加共用方法
 8         CreatePerson.prototype.showName = function () {
 9             alert(this.name);
10         };
11         CreatePerson.prototype.showSex = function () {
12             alert(this.sex);
13         };
14
15         var p1 = new CreatePerson(‘leo‘ , ‘male‘);
16         var p2 = new CreatePerson(‘shawn‘ , ‘male‘);
17         p1.showName();
18         p1.showSex();
19
20         alert(p1.showName == p2.showName);
21     </script>

这个时候我们会发现最后的输出是true,说明不同的对象使用了同样的方法

最后关于一个优先级的问题

 1     <script>
 2         Array.prototype.a = 12;  //给Array类添加公共属性a = 12;
 3         var arr = [1,2,3];
 4         alert(arr.a);  //12
 5
 6         arr.a = 5;   //给由Array类所创造的对象arr添加重名属性a
 7         alert(arr.a);  // 5
 8
 9         delete  arr.a;  //删除arr对象的a属性
10         alert(arr.a);  //12
11     </script>

我们会发现这和CSS中内部样式和行间样式很相像,prototype添加的属性相当于一个内部样式 ,而对象的重名属性相当于行间样式 , 所以重名时对象的属性优先级肯定是高于prototype所添加的属性的。

时间: 2024-10-12 23:44:10

web前端学习笔记------JS面向对象初级的相关文章

WEB前端学习笔记 一

最近时间比较充裕,整理了一下学习过的笔记,此篇笔记包含了:Html.Css.JavaScript.Jquery.以及使用帝国CMS或是织梦CMS建立自己的网站,也许也会整理一下PHP的笔记,如果时间允许会整理完全. 虽然笔记是从最基础的开始,但是,并不包含电脑的基础知识,所以你必须已经掌握了一些电脑的基本操作,比如开关机,你的电脑用的是什么操作系统,至少也要会用word和wps吧.浏览器是做什么的,什么拷贝.复制.粘贴.知道最基本的文件类型,如,文本文件,视频文件,图片文件,什么是可执行文件,分

WEB前端学习笔记 四

接上一篇,web学习笔记 四,在此感谢您对此篇笔记的认可,但转发时请注明文章出自网知博学. 2.0  html的语法格式 html的标签要写在尖括号中 :<> 在在英文输入法状态下,按住shift键然后再按它左侧的尖括号就可了, 先学习一个简单的h1标签,是个标题标签,在html中这样写: <h1>我在h1标签中,我就是标题</h1> 那么h1标签中所包裹的文字,就标记成标题了.通过浏览器的解析后在页面上显示出来的效果就是字体加粗,加黑,和word中的标题性质一样! 大

WEB前端学习笔记 五

接web前端学习笔记第四篇,此篇为web学习笔记 五,在此感谢您的采集和转发,但请注明文章出自网知博学. 2.0.3  html标签的属性格式 现在我们知道了两个双标签分别是,标题标签:<h1> - <h6>.和段落标签:<p></p>还知道了一个换行的单标签:<br />,现在我们给<p></p>标签添加一个属性,来改变段落是右对齐,还是左对齐,还是居中. 如上图,<p>标签中的 align(中文就是排列的意

Web前端学习笔记(001)

....编号    ........类别    ............条目  ................明细....................时间 一.Web前端学习笔记                                    2016年6月15日10:38:53    /****************************************************************begin******************************

web前端学习笔记:文本属性

今天的web前端笔记主要讲述文本属性,希望能帮助到正在学习web前端开发的初学者们,废话不多说了,一起来看看文本属性的相关内容吧. 文本属性 文本缩进 将Web页面上的一个段落第一行缩进,这是一种最常用的文本格式化效果.有的网站在段落的第一个字母前放一个很小的透明图像,这些图像将文本推到后面来制造一种缩进文本的感觉.另外一些网站则使用完全标准的空格(spacer)标记.而在CSS中有一种更好地方法实现文本缩进.那就是text-indent属性. 通过使用text-indent属性,所有元素的第一

WEB前端学习笔记 二

1.4  JavaScript和Jquery能做什么? JavaScript是Netscape公司开发的一种基于对象和事件驱动的脚本语言 ,并且可在所有主要的浏览器中运行 IE.Firefox.Chorme.Opera ,JavaScript 可用来向 HTML 页面添加交互行为,如表单数据合法性验证.网页特效.动画效果.数值计算,例如你现在浏览的网知博学的首页面上的图片循环播放和导航分类,淘宝和京东的商品分类菜单等.JavaScript 是一种弱类型语言,无需编译,可由浏览器直接解释运行 特点

WEB前端学习笔记 三

接上一篇,web学习笔记 二,web学习笔记刚刚发出,就发现被其他网站采集了,在此感谢您的采集和转发,但请注明文章出自网知博学. 1.7  开发工具的选择 增强文本编辑器:EditPlus.Notepad++ 特点:比较小.占用系统资源比较少.代码颜色高亮显示.但没有代码自动补功能 IDE:(Integrated Development Environment,集成开发环境).IDE集成开发环境(简称IDE)开发环境就是指在开发软件的时候需要用到的软件.这些软件包括代码编辑器.编译器.调试工具和

web前端学习笔记---实现雪花飘落的效果

看了javascript网页特效实例大全中的图片飘下的效果实例,觉得值得动手学习下. 就把图片改成雪花图,完成一个雪花飘下的效果. 并且,其中有些内容比较陈旧了,那么就学者改掉吧. 包括: 1.对left和top的操作仅支持IE浏览器,这咋行,必须得支持chrome. 2.控制图片下落的过程还要去检索element,不好吧,那就改成数组维持,直接操作数组中维持的对象,启不更快. 3.向文档中添加元素直接改成通过JS代码创建元素对象的方式. 实现思路: 1.初始化生成10个div,全都采用绝对定位

Web前端学习笔记1

Day1. 1.Windows常用快捷键. 快捷键 功能 ctrl+c 复制 ctrl+v 粘贴 ctrl+x 剪切(复制和剪切后都可以粘贴) ctrl+a 全选 ctrl+s 保存 ctrl+tab 软件内部切换内容 alt+tab(win+tab) 打开所有软件快速切换 win+r 快速打开软件 win+e 快速打开计算机 ctrl+空格 调处输入法 f2 快速修改文件名 f5 刷新当前页面 win+l 快速让电脑待机 ctrl+z 撤销 win+d 返回桌面 2.网页基本了解 2.1 网页