小结JS中的OOP(上)】的更多相关文章

前言:大家都知道,OOP有三大特性:封装,继承,多态.下面是自己对这三个特性的理解: 封装:把属性与方法整合到某种数据类型中.目的是让类的使用者按类的编写者的意愿去使用类.在封装过程中会一般会做两件事: ① 隐藏内部实现 ② 对外提供接口(访问权限控制). 继承:共享父类的属性与方法 多态:不同对象执行相同的操作,可以产生不同的结果.关于多态要注意两点: ① 在子类以父类的形式存在时,不能使用子类的属性与方法② 子类在工作时,采用自己的实现方式. 下面我们以java为例子看看OOP的三个特性.…
关于JS中OOP的具体实现,许多大神级的JS专家都给出了自己的方案. 一:Douglas Crockford 1.1 Douglas Crockford实现的类继承 /** * 原文地址:http://javascript.crockford.com/inheritance.html */ Function.prototype.method = function (name, func) { this.prototype[name] = func; return this; }; Functio…
此篇文章主要是提炼<JavaScript高级程序设计>中第六章的一些内容. 一:JS中OOP相关的概念 开始之前先总结JS中OOP相关的一些概念: 构造函数:JS中的构造函数就是普通的函数,当JS中的函数使用new调用时,这个函数就是构造函数.构造函数调用与普通函数调用相比会有以下两点不同: ① 在进入构造函数时,会先创建一个对象,并将构造函数的作用域赋值给这个对象(this指向这个对象) ② 在退出构造函数前,会默认返回创建的对象(返回this) 原型对象:每个函数都会有一个prototyp…
一.你必须知道的 1> 原型及原型链在继承中起到了关键的作用.所以你一定要理解他们.2> 不会JS中的OOP,你也太菜了吧!(第一篇) 二.继承的6种方法 1> 原型链继承 原型链继承是通过创建Super的实例,并将该实例赋值给Sub.prototype来实现的. 实现的本质是:重写子类型的原型对象,代之以超类型的实例. function Super(){ this.name = 'JChen___'; } Super.prototype.getSuperName = function(…
JS中的继承(上) 学过java或者c#之类语言的同学,应该会对js的继承感到很困惑--不要问我怎么知道的,js的继承主要是基于原型(prototype)的,对js的原型感兴趣的同学,可以了解一下我之前写的JS中的原型对象 相信很多同学也跟我一样,刚开始接触js的面向对象编程的时候,都抱着一种排斥的心态--为什么js这么麻烦?其实了解完原型链后,再来看js的继承,你会发现js的继承其实比其他OOP语言更简单,更灵活,我们来看一个基于原型链的继承 // 父类 function Person() {…
/** * 获取上一个月 * * @date 格式为yyyy-mm-dd的日期,如:2014-01-25 */ function getPreMonth(date) { var arr = date.split('-'); var year = arr[0]; //获取当前日期的年份 var month = arr[1]; //获取当前日期的月份 var day = arr[2]; //获取当前日期的日 var days = new Date(year, month, 0); days = da…
一.你必须知道的 1) 字面量 2) 原型 3) 原型链 4) 构造函数 5) 稳妥对象(没有公共属性,而且其方法也不引用this的对象.稳妥对象适合用在安全的环境中和防止数据被其它程序改变的时候) 二.开始创建对象吧 <1>: 首先来看两种最基本的创建对象的方法 1> 使用Object创建对象 var o = new Object(); o.sname = 'JChen___1'; o.showName = function(){ return this.sname; } 2>…
<html>  <head>  <script language="javascript">    function getSize() {     var file = document.getElementById("upload").value;    alert(file);    var fso = new ActiveXObject("Scripting.FileSystemObject");   …
  前  言 JRedu 学过程序语言的都知道,我们的程序语言进化是从"面向机器".到"面向过程".再到"面向对象"一步步的发展而来.类似于汇编语言这样的面向机器的语言,随着时代的发展已经逐渐淘汰:而面向过程的语言也只有C语言老大哥依然坚挺:现在主流的语言(例如Java.C++.PHP等)都是面向对象的语言. 而我们的JavaScript语言,恰恰介于面向过程与面向对象之间,我们称它为"基于对象"的语言.但是,JS中的OOP依…
一 私有变量和函数 js中没有概念上的私有,公有也没有静态和非静态相关概念,有的只能是通过作用于来模仿 函数的块级作用域使得函数内部成员可以不被外部所访问,比如我们使用块级作用于定义一个类 //定义一个命名空间,用于相关类挂靠到该空间下,使得外部通过该命名空间访问某个类型 var MyLib = window.MyLib = MyLib || {}; (function{ // 在函数内部 name 是不会被外部直接能够访问的,除非通过方法暴露接口 var name=''; //同样的道理,如果…
前一段时间由于事情比较多,所以笔记耽搁了一段时间,从这一篇开始我会尽快写完这个系列. 文章中有什么不足之处,还望各位大佬指出. JS中的数据类型 上一篇中我写了有关JS引入的Script标签相关的东西. 那么这一篇,我们可以正式进入JS的世界了,emmm 前面的东西应该比较基础,大佬们不喜勿喷. 首先学习一门语言,最开始不出意外的话应该是先了解这门语言由什么类型的数据组成,毕竟语言都是建立在这些数据类型的基础之上的. 在介绍数据类型之前,我先大概说一下 typeof 操作符,这是JS中判断一个变…
JS中的继承(下) 在上一篇 JS中的继承(上) 我们介绍了3种比较常用的js继承方法,如果你没看过,那么建议你先看一下,因为接下来要写的内容, 是建立在此基础上的.另外本文作为我个人的读书笔记,才疏学浅,如有错误,敬请指正. 接下来我们要介绍另外3种相对比较奇葩的继承 一. 原型式继承 function clone (proto) { function F () {} F.prototype = proto return new F() } clone 内部首先是创建了一个空的构造函数F,然后…
这里接上篇:js中各种跨域问题实战小结(一) 后面继续学习的过程中,对上面第一篇有稍作休整.下面继续第二部分: -->5.利用iframe和location.hash -->6.window.name跨域实现 利用iframe和location.hash实现跨域 想必有很多人像我之前一样,或许只知道上面文中所说的那几种方法.所以,我刚了解到可以用iframe和location.hash来实现跨域的时候,我会想,为什么他们可以实现.iframe是什么,有什么特性,location.hash是什么…
什么是跨域?为什么要实现跨域呢? 这是因为JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.也就是说只能访问同一个域中的资源.我觉得这就有必要了解下javascript中的同源策略是怎么回事了:javascript的同源策略 .这里更加细致详细的总结了为什么要跨域:javascript跨域之  什么是跨域?为什么跨域? 于是当我们想某些特定的功能的时候,实现合理的跨域请求就显得比较重要了.我努力通过自己动手,自己模拟环境来切实的尝试跨域是怎么回事. 第一部分总结如下: -->…
js中OOP小指南 在指南中,我将尝试解析以面向对象规范聚焦的es6的新特性. 首先, 什么是设计模式 范例是某个事务的例子或模型,在某种情况下,按照一种模式创建了计算机程序. 什么是面向对象 显然你意识到这是一种设计模式,像已经存在的这个模式,我们还有许多其它的设计模式,比如函数式编程和反应式编程. 这种模式的特点 我们在这个模式中所做的是以更接近实际的方式编程,我们使用类,对象,方法,属性等进行编程,并且集成了抽象,封装,模块化,隐私,多态和继承等术语. javascript的问题是,它不是…
页面上有两个table,id都是”cont2",现要在js中取到这两个table,改变样式. js实现: var tab2=document.all.cont2(1);var  tab=document.all.cont2(0);tab.style.display="none";tab2.style.display="block";…
利用其它控件触发file的click事件来选择文件后,使用jquery.form.js中的submit方法提交时IE报错:form.submit SCRIPT5: 拒绝访问,其它浏览器正常, <script> function fileclick(){ $("#file1").click(); } $(function(){ $("#btnSumbit").click(function(){ $("#form1").ajaxSubmi…
js中的referrer的用法举例. js完整代码:  <script language="javascript">  var refer=document.referrer;  document.getElementById('backurl').value=refer;  </script>  “HTTP_REFERER”  链接到当前页面的前一页面的 URL 地址.不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERE…
js完整代码: <script language="javascript"> var refer=document. referrer ;     document.getElementById('backurl').value=refer; </script> “HTTP_REFERER” 链接到当前页面的前一页面的 URL 地址.不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER.因此,这个变量不总是真实正确的.…
v-model是 vue.js 中用于在表单表单元素上创建双向数据绑定,它的本质只是一个语法糖,在单向数据绑定的基础上,增加了监听用户输入事件并更新数据的功能: 对,它本质上只是一个语法糖,但到底是一个什么样的语法糖呢--? 正好最近我也踩到相关的坑了,就从最简单的input和textarea元素入手,分析一下v-model这个指令到底做了什么吧 请先确认您已阅读过官方文档中关于v-model的部分 没有任何修饰符的 v-model v-model 会根据绑定元素的类型,监听不同的输入事件,在…
js中获取各种宽度和距离,常常让我们混淆,各种浏览器的不兼容让我们很头疼,现在就在说说js中有哪些宽度和距离. 1.名词解释 screen:屏幕.这一类取到的是关于屏幕的宽度和距离,与浏览器无关,应该是获取window对象的属性. client:使用区.客户区.指的是客户区,当然是指浏览器区域. offset:偏移.指的是目标甲相对目标乙的距离. scroll:卷轴.卷动.指的是包含滚动条的的属性. inner:内部.指的是内部部分,不含滚动条. avail:可用的.可用区域,不含滚动条,易与i…
在之前的文章「深入理解 React JS 中的 setState」与 「从源码的角度再看 React JS 中的 setState」 中,我们分别看到了 React JS 中 setState 的异步表现,并从源码的角度简单地了解了 React 中 setState 的设计结构以及原理. 这篇文章继上篇文章后,继续从源码的角度来了解 React 中对 State 批量更新策略的定义. 同样,源码的部分为了保证格式正常就直接截图了,查看源码点击对应的链接直接跳转至 GitHub 查看即可. 1.…
js中对arry数组的各种操作小结   最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊,为了在以后的工作中写出最优化的代码,我们必须要不断的充电,不断的提高自己的技能. 废话不多说,现在我将最近看的有关arry的一些心德和使用分享出来,希望能够给大家带来小小的一点帮助.谢谢! 可以这样说Arry应该是我们在平时写js代码中,使用频率最高的,在平时的项目中,很多数据都是可以通过arry…
深入认识JS中的函数: 1.概述,认识函数对象 2.函数对象和其他内部对象的关系 3.将函数作为参数传递 4.传递给函数的隐含参数:arguments 5.函数的apply,call方法和length属性 6.深入认识JS中的this指针 1.概述,认识函数对象 JS中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的.通过函数对象的性质,可以将一个函数赋值给一个变量或者将函数作为参数传递. 用法: function Func1(...){......}; var Func2 = f…
return  函数执行到这句时会终结,并返回调用函数,而且把表达式的值作为函数的结果返回 return false 可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页. Return False 就相当于终止符,Return True 就相当于执行符.    在js中return false的作用一般是用来取消默认动作的.比如你单击一个链接期间除了触发你的    onclick事件以外,还要触发一个默认事件就是执行页面的跳转,这是a标签的默认属…
最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊,为了在以后的工作中写出最优化的代码,我们必须要不断的充电,不断的提高自己的技能. 废话不多说,现在我将最近看的有关arry的一些心德和使用分享出来,希望能够给大家带来小小的一点帮助.谢谢! 可以这样说Arry应该是我们在平时写js代码中,使用频率最高的,在平时的项目中,很多数据都是可以通过arry来存储.操作等任务. 在js中有关Arr…
web开发中,文件的上传是非常基本功能之一. 在asp.net中,通常做法是利用webservice 来接收文件请求,这样做的好处就是全站有了一个统一的文件上传接口,并且根据网站的实际情况,可以将webservice部署到其他服务器上,可以兼容考虑将来的分布存储等等问题.   在MVC中实现文件上传主要有2中方式: 1.普通Controller实现文件上传 2.ApiController实现文件上传   普通Controller实现文件上传 在普通的Controller中实现文件上传时,需要使用…
JS中的公有成员,私有成员和静态成员 a.实现类的公有成员 b.实现类的私有成员 c.实现类的静态成员 a.实现类的公有成员 之前定义的任何类型成员都属于公有成员的范畴,该类的任何实例都对外公开这些属性和方法. 注意在JS中,其实没有私有的概念~ b.实现类的私有成员 //私有成员 /* * 私有成员即在类的内部实现中可以共享的成员,不对外公开. * JS中并没有特殊的机制来定义私有成员,但可以用一些技巧来实现这个功能. */ /* * 这个技巧主要是通过变量的作用域性质来实现的,在JS中,一个…
浅解析js中的对象 原文网址:http://www.cnblogs.com/foodoir/p/5971686.html,转载请注明出处. 前面的话: 说到对象,我首先想到的是每到过年过节见长辈的时候长辈们老是开玩笑的问我"你找了对象没?".不说大家都知道,这里的"对象"指的是"女朋友",但是今天我想要说的js中的"对象"和我们生活中谈到的"对象"不是同一回事,但是其中也有着很多相似之处. 在讲js中的对象…
call及apply在js里经常碰得到,但一直感觉很陌生,不能熟练使用.怎样才能熟练应用呢? 为什么存在call和apply? 在javascript OOP中,我们经常会这样定义: function cat(){ } cat.prototype={ food:"fish", say: function(){ alert("I love "+this.food); } } var blackCat = new cat; blackCat.say(); 但是如果我们有…