原生js--类的扩充和类型检测】的更多相关文章

扩充类的方法: 1.向原型对象上添加方法或属性.例如:Number.prototype.cl = function(){}; 但这种做法并不推荐,因为ES5之前,无法将这些新添加的方法或属性设置为不可枚举的.他们可以在for/in循环中被遍历到 2.使用ES5提供的扩展对象的方法:Object.definePropery(). 在web浏览器环境下,可以通过Object.defineProperty()方法给HTMLElement.prototype添加方法,从而使表示HTML标记的所有对象可以…
类型检测方式 平时数据类型都是清晰明了的,但有些功能函数还是需要用到类型检测,现总结一下几种常见的类型检测方式: typeof instanceof Object.prototype.toString typeof: 通常只记得适合基本类型, 不要忘了还有函数对象 还有只能大致判断的Object相关的 还有一个非主流的null 那么多个object,谁是谁呢?  instanceof: A instanceof B: A: 基本类型就直接GG,false,必须是个对象 B:要么是个对象,要么是个…
JS有很多数据类型,对于不同数据类型的识别和相互转换也是面试中的一个常考点,本文主要讲的就是类型转换和类型检测. 数据类型 JS中的数据类型主要分为两大类:原始类型(值类型)和引用类型.常见的数据类型如下图所示: 原始数据类型存在栈中,引用类型在栈中存的是一个引用地址,这个地址指向的是堆中的一个数据对象.需要注意的是null在这里我们算在原始类型里面,但是你用typeof的时候会发现他是object,原因是就算他是一个对象,那他应该在栈中存一个引用地址,但是他是一个空对象,所以这个地址为空,也就…
typeof 适合函数对象和基本类型的判断 typeof 100instanceof 适合判断对象类型 obj instanceof Object 基于原型链判断操作符,若做操作符不是对象,则会直接返回false.期望右操作数是一个函数对象或函数构造器,若不是则会抛出typeError异常Object.prototype.toString Object.prototype.toString.apply(null)--->[object Null]constructor 任何对象都有继承自原型的c…
在强类型语言,数组类型检测是非常容易的事情(typeof就可以解决),而在弱语言JS数据类型就很容易混淆了. JS中常见的数据类型有:number.string.boolean.undefined.function.array.Object和null.下面先用typeof来测试下: var k = 9; console.log(typeof k); //number 检测number可以用typeof来检测了. var k = "string"; console.log(typeof…
1 类操作 function hasClass(cla, element) { if(element.className.trim().length === 0) return false; var allClass = element.className.trim().split(" "); return allClass.indexOf(cla) > -1; } function addClass(cla,element){ if(!hasClass(cla,element)…
C#保留2位小数几种场景总结   场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.25.可不可以刚好保留到最后一位不是0的位置?默认保留2位,如果真的有3位小数,就保留3位,有4位就保留4位. 先说一下ToString("0.00##")中0和#的区别: 0 代表占位的.如果ToString("0.00") 这样就是保留两位小数,无论小数有多少位或者无…
背景: 都知道js内置的类型检测,大多数情况下是不太可靠的,例如:  typeof  . instanceof typeof 返回一个未经计算的操作数的类型, 可以发现所有对象都是返回object  (null是空指针即空对象) instanceof :  用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置 (简单理解: 左侧检测的对象是否可以沿着原型链找到与右侧构造函数原型属性相等位置)  后面会附上模拟方法. 缺点: 1.instanceof 与全局作用域有关系,[]…
类型检测: 类和对象: Call,Apply,Bind…
原生js添加和删除类: this.className +=" "; this.className = this.className.replace(" 原来的类","替换后的类");…
在js中的类型检测目前我所知道的是三种方式,分别有它们的应用场景: 1.typeof:主要用于检测基本类型. typeof undefined;//=> undefined typeof 'a';//=> string typeof 1;//=> number typeof true;//=> boolean typeof {};//=> object typeof [];//=> object typeof function() {};//=> function…
原生JS动态添加和删除类 由于需要, 给按钮组监听点击事件(要求用事件委托),当有一个按钮被点击时,相应的给该按钮添加一个类(激活类),其他没有点击的按钮就要移出该类 添加和和删除类有三种方法 首先等到一个 dom 对象(也叫dom元素), 通过document.getElement--的几种方法得到 如` let element = document.getElementById("box"); 通过类名, 获取类名: el.className, 赋值: el.className =…
1.javascript中以函数来表示类: 一般函数是小写开头:function foo() 类开头是大写:function Foo() 实例化类: obj = new Foo() 其他属性就同类是一致的 Name = "root" Age = function Foo(name,age){ this.Name = name; this.Age = age; this.Func = function(){ console.log(this.Name,this.Age); #this是当…
在js中的类型检测目前我所知道的是三种方式,分别有它们的应用场景: 1.typeof:主要用于检测基本类型. typeof undefined;//=> undefined typeof 'a';//=> string typeof 1;//=> number typeof true;//=> boolean typeof {};//=> object typeof [];//=> object typeof function() {};//=> function…
我们知道 TypeScript 2.3 以后的版本支持使用--checkJs对.js文件进行类型检查和错误提示. 但是由于 JavaScript 是弱类型语言,在编写代码的时候,是无法检测变量的类型的. 因此每次运行代码类型报错的时候,我心中都会冒出来一个强烈的愿望:要是 JavaScript是强类型的多好! 好消息是,JSDoc 的 @ts-check,可以现实这个愿望. 立即上手 如果能有机会使用 TypeScript 那当然是最好,但是往往开发的老项目在早期都是 JavaScript 完成…
算法用的是Tween类,需要研究的参考这篇文章: http://www.cnblogs.com/cloudgamer/archive/2009/01/06/Tween.html 网页里常用的动画 放大缩小 位置移动 透明度改变 效果预览:http://jsfiddle.net/dtdxrk/WnACG/embedded/result/ <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type…
本文首发于我的个人博客 : http://cherryblog.site/ 前言 js 中的类型检测也是很重要的一部分,所以说这篇文章我们就来讲一下怎么对 JavaScript 中的基本数据类型进行检测.其实这也是在读 Zepto 源码中学习到的,所以阅读源码对我们的提升还是很有帮助的.本文基于参考了前辈们的文章之后个人理解此文写的有不当的地方,请各位大佬指正. 其实常规方法主要有四种 typeof instanceof Object.prototype.toString construcor…
1.app.js /** * 原生 JS 中的类.静态方法.继承 * es5中的类和静态方法 */ function Person(name, age) { // 构造函数里面的方法和属性 this.name = name; this.age = age; this.run = function () { console.log(`${this.name} --- ${this.age}`) } } // 原型链上面的属性和方法可以被多个实例共享 Person.prototype.sex = '…
变量命名 变量名:字母 数字 下划线 美元符$ jquery:  $     $.each()   $ === jQuery underscore( js的一个函数库)  :   _     _.each() 关键字 :  if   for 保留字 :  class 推荐有意义的命名: buttonCancel   button_cancel   btnCancel 数据类型和堆栈 基本类型(可以修改) :  4  str   true  undefined  null 引用类型(不能修改) :…
JavaScript中的变量类型: 基本类型值:Undefined,Null,Boolean,Number和String. 按值访问(可直接操作保存在变量中的变量值): 复制规则:当复制基本类型值时:两个变量完全独立,不会互相影响.如下所示: var a = b = 1; var c = a; b = 2; c = 3; console.log(a); console.log(b); console.log(c); 引用类型值:包含多个值的对象,是一种将数据(属性)与功能(方法)组织在一起的数据…
文章首发: http://www.cnblogs.com/sprying/p/4349426.html 本文罗列了一般Js类型检测的方法,是构建Js知识体系的一小块,这篇文章是我很早之前总结的. 一.Js中有5种基本数据类型 Undefined .Null.Boolean.String.Number(包含NaN) NaN和任何类型的值都不相等,包括NaN:isNaN用来判断数值是不是NaN类型   二.类型判断 1. isFinite(number) 是不是无穷大.如果是NaN,或者正负无穷大,…
代码地址如下:http://www.demodashi.com/demo/12755.html 项目介绍 本项目是利用原生js实现的h5小游戏-植物大战僵尸,主要结合了一下自己对于h5小游戏的理解,结合面向对象的编程思想进行开发,在实现时使用了部分es6语法,对于es6语法不太熟悉的小伙伴可以先查阅相关资料了解一下. 如有需要,可根据自己的需求修改源码样式.源码配置属性代码,实现个性化定制. 以下为文件目录结构示意图,核心代码在js文件夹下的四个common.js.main.js.game.js…
原文https://github.com/nefe/You-D... 原生JS与jQuery操作DOM对比 You Don't Need jQuery 前端发展很快,现代浏览器原生 API 已经足够好用.我们并不需要为了操作 DOM.Event 等再学习一下 jQuery 的 API.同时由于 React.Angular.Vue 等框架的流行,直接操作 DOM 不再是好的模式,jQuery 使用场景大大减少.本项目总结了大部分 jQuery API 替代的方法,暂时只支持 IE10 以上浏览器.…
类数组 - [ Array-like ] : objects 1. what's Array-like 类数组和数组很像,但是数组的很多方法却不能用,这就很尴尬了~ 像 arguments.nodelist 等这些数据有序集合,有长度和下标等属性,但却不是 Array. 这就是所谓的 Array-like(类数组/伪数组).对于 Array-like 我们可以用跨原型链来操作,eg :Array.prototype.slice.call(arguments, 0); 这也是把 Array-lik…
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐进增强)优雅的处理能力以及 Ajax 等方面周到而强大的定制功能无不令人惊叹. 另外,阅读源码让我接触到了大量底层的知识.对原生JS .框架设计.代码优化有了全新的认识,接下来将会写一系列关于 jQuery 解析的文章. 我在 github 上关于 jQuery 源码的全文注解,感兴趣的可以围观一下…
很多时候,我们经常听见有人说jquery有多快多快.在这个各种类库满天飞的时候,不得不说的是,能有原生JS快吗? 是的,明显原生JS要更快,因为诸如JQuery这样的库必须要兼容各种浏览器和低版本和许多其他的东西,考虑通用性必然会导致性能的损耗. 当然,我不是提倡写代码纯用原生JS实现,我记得淘宝玉伯曾经说的一句话“框架能够让我们走的更快,但只有了解原生的JS才能让我们走的更远”. 一些感(fei)想(hua): 原生的js,好比全真教的武功,一步步从基础开始(先练气再御剑),很长一段时间内和j…
转载:http://www.cnblogs.com/sicd/p/4613628.html 一.前言 最近在开发一个新项目,需要做登陆等一系列的表单提交页面.在经过“缜密”的讨论后,我们决定 不用外部流行的框架,如bootstrap,由于我负责的模块 仅仅是其中的一部分,因此少数服从多数,无奈只能抛弃bootstrap等提供的布局,样式以及验证等一些列如此方便的组件,(他们拒绝使用的原因也令人发省). 那么问题就来了. 二.设计理念 我们都知道,在抛开外部框架,仅仅用JS+css+html 去开…
1.javascript类型: 注:包装对象:如"hello".length实际为js为我们隐式创建了一个String临时对象,去调用该对象的length属性,调用过后再将该临时对象删除. 因此,如果原始类型变量使用.length,.toString()等js属性.方法等,用var str = new String('hello')的效率要优于var str = 'hello',因为使用过程中无需再多次建立和删除临时包装对象. 2.javascript类型检测: (1).typeof:…
  javascript内置的类型检测机制并非完全可靠.比如typeof操作符,并不能准确的判断数据是哪个类型,比如:数组和对象就不能通过typeof来区分. typeof [] ==="object" ; // true typeof {} === "object"; // true 但是typeof用来区别对象与基本数据类型时就比较有用了. 基本数据类型检测 由于typeof对所有对象和数组类型返回的都是"object",所以它在区别对象与基…
1.DOM基础getElementByIdgetElementByTagNamegetElementByName getElementsByClass querySelector querySelectorAllgetAttributesetAttributeremoveAttribute domobj.tagNamedomobj.innerHTML innerHTML与innerText的区别.http://akunamotata.iteye.com/blog/440863domobj.idd…