所谓兼容性,就是看浏览器是否支持当前对象的属性或是方法,先通过获得页面文本内容的方式来了解兼容性,并封装函数或对象以解决此类问题. 获得页面文本内容的方式:innnerText 或textContent 或innerHTML. innerText在不同浏览器存在有兼容性问题,为此我们需要封装到一个函数里,使得不同的浏览器及不同版本都能获得页面文本.(谷歌兼容性较好,这里只拿早期火狐版本和IE8及其之前版本作比较) innerText和innerHTml的具体区别 在获取页面文本的时候1,inne…
1.使用toString()方法来检测对象类型 可以通过toString() 来获取每个对象的类型.为了每个对象都能通过 Object.prototype.toString() 来检测,需要以 Function.prototype.call() 或者 Function.prototype.apply() 的形式来调用,把需要检测的对象作为第一个参数传入. var toString = Object.prototype.toString; toString.call(new Date); // […
//获取非行间样式的封装 function setStyle(obj,name){ // 考虑兼容性问题 if(obj.currentStyle){//不兼容火狐和谷歌 return obj.currentStyle[name]; }else{ return getComputedStyle(obj,false)[name];//不兼容IE } } function move(obj,json,complete) {// 用计时器前先清除,防止多次点击 clearInterval(obj.tim…
大家好,今天我带大家学习一下js的OOP, 大家都知道,面向对象有三个基本特征,继承,封装和多态,面向对象的语言有那么几种,C++,PHP,JAVA等,而功能强大的JS可以模拟实现面向对象的两大特征,继承,和封装,无法实现多态,所以当有人对问你,js是一门面向对象的语言,你应该反驳他,js是一门基于对象的语言,不是面向对象,他就会觉得你很有学问.哈哈! 首先,我们学习一下,什么是对象呢,那就先了解一下类和对象是什么? 1.类:一类具有相特征(属性)和行为(方法)的集合 eg:人类--->属性,身…
一.了解 基本数据类型保存在栈内存中,按值访问,引用数据类型保存在堆内存中,按址访问. 二.浅拷贝 浅拷贝只是复制了指向某个对象的指针,而不是复制对象本身,新旧对象其实是同一内存地址的数据,修改其中一个值,另一个也会动态改变. 三.深拷贝 深拷贝是真正意义上实现了数组和对象的拷贝,它创建了另外一个一模一样的对象,和原对象不是一个内存地址,修改一个值不会影响另一个的值. 使用JSON.stringify()和JSON.parse()也可以实现深拷贝.当值为undefined.任意函数.symbol…
对象的遍历 对象可以当做数组处理,使用for in var person={}; person.name="cyy"; person.age=25; person.infos=function(){ alert(this.name+" "+this.age); } for(var i in person){ console.log(i);//属性名或方法名 console.log(person[i]);//属性值或方法值 } 使用构造函数声明的对象,需要实例化之后再…
基本数据类型:string,number,boolean,null,undefined,symbol 引用数据类型:object(array,function...) 常用的检测数据类型的方法一般有以下三种: 1.typeof 一般主要用来检测基本数据类型,因为它检测引用数据类型返回的都是object 还需要注意的一点是:typeof检测null返回的也是object(这是JS一直以来遗留的bug) typeof 1 "number" typeof 'abc' "string…
slice方法的功能 // 1) : 数组的截取 // 2) :slice(m,n): 从数组索引m开始,截取到索引n,但是不包含n;[前包后不包] // slice(m) : 从索引m开始,截取到末尾: // slice():数组的克隆 slice(0); // // 索引负数: 让当前length+负数: // 3) : 返回值是截取的数组 // 4) : 原有数组不发生改变: /** * 首先:先分清楚slice有几种情况,slice的思想 * 传的参数可以是其他类型的数据,只要能转成有效…
/** * 获取URL参数 */ function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null;…
       [重点提前说:面向对象的思想很重要!]         最近开始接触学习后台的PHP语言,在接触到PHP中的面向对象相关思想之后,突然想到之前曾接触的JS中的面向对象思想,无奈记性太差,便去翻了翻资料,花了点时间梳理下以前接触过的OOP相关知识点,也希望在的PHP的学习中能相互对比,加深理解. 接下来可要进入化冰之路-PHP篇了,过几天我将会再发一篇PHP中有关OOP的相关知识点梳理学习,希望大家放平心态,面向OOP,共同进步!   一.学习前,你该知道这些基础知识~  1.语言的…
本来规划的是2013年,狠狠的将JS学习下,谁知计划赶不上变化,计划泡汤了.13年的我对JS来说可以说是属于跟风,对它的理解和认识也仅仅是皮毛而已,也是因为要完成<ArcGIS API for JavaScipt开发教程>而临阵磨枪. 在接触JS一段时间后,觉得还是比较灵活的,灵活的前提是要更深入的了解,就像两个陌生的人,相处的时间长了,了解的时间长了,难免会产生感情一样.对于JS也开始产生了感情,这种感情体现在工作中,体现在周围的环境中. 目前很多开发者纷纷加入JS的阵营,看来这已经不是跟风…
内容要点: 1.什么是对象:JS权威指南学习总结-第六章 ,(有句话:一切都是对象) 2.什么面向对象 使用对象时,只关注对象提供的功能,不关注其内部细节,比如jQuery.面向对象是一种通用思想,并非只有编程中使用,任何事情都可以用. 3.JS中面向对象三大特征: 封装.继承.多态 4.JS自定义对象(三大对象两大属性): 4.1创建对象方式:方法1:对象初始化的方法,就是通过对象直接量创建的对象.方法2:通过关键字new和构造函数的方法创建对象 4.2对象属性定义:私有属性.对象属性.类属性…
前言 在开始正式讲解透视摄像机前,我们先来理理three.js建模的流程.我们在开始创建一个模型的时候,首先需要创建我们模型需要的物体,这个物体可以是three.js中已经为我们封装好的,比如正方体,球体,平面等,当然我们也可以通过导入的方式导入模型文件.然后我们需要根据项目的需求为创建好的物体添加不同类型的材质,材质可以是纹理,颜色或者是贴图.物体和材质通过new Mesh()方法就会组合成一个网格mesh,这个时候我们会通过three.js提供的渲染方法将创建好的网格mesh渲染到场景sce…
引言 我们知道,各个版本的浏览器有着许多不一致性.理想状态下,应该是所有的浏览器都提供一套标准的API接口.但是现实中,各个版本的浏览器存在的怪癖非常多,我们通常都是使用客户端检测来作为补救措施.但是我们应该知道,不到万不得已,不要使用客户端检测.只要能找到更通用的方法,就应该优先采用更通用的方法.总之.先设计最通用的方案,在使用特定于浏览器的技术增强该方案. 1.能力检测 最常用的也是最广泛使用的客户端检测技术是能力检测(特性检测).能力检测的目标不是识别特定的浏览器,而是识别浏览器的能力.使…
第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set(arr); // console.log([...newarr1]); // 输出的值是  [12, 3, 4, 5, 6] 第2题==>深拷贝: ==>拷贝出来的对象互相的独立,不会影响 使用的JSON.stringify和JSON.parse(user2); var user1={name:…
在js中可以使用Object.prototype.toString.call()的来检测一个对象是否为一个数组 //检测数组 var a = [1, 2]; console.log(typeof a); //object console.log(Object.prototype.toString.call(a)); //[object Array] //检测字符串 var s = "you"; console.log(typeof s); //string console.log(Ob…
项目中有个时间相关的需求,很自然的用到了 js 中的 new Date() 获取时间,浏览器使用模拟手机模式访问没有问题,但是真机测试时发现,ios系统的手机无法显示时间. 定位问题发现是 new Date()  的 兼容性问题: 在 ios/Safari 中,使用 new Date() 获取的日期格式是:2017/03/15 ,但是在Android/Chrome中获取的日期格式是:2017-03-15/2017/03/15 . 解决方法: var time= "2018-09-06"…
在js中的类型检测目前我所知道的是三种方式,分别有它们的应用场景: 1.typeof:主要用于检测基本类型. typeof undefined;//=> undefined typeof 'a';//=> string typeof 1;//=> number typeof true;//=> boolean typeof {};//=> object typeof [];//=> object typeof function() {};//=> function…
1. 在 main.js 中封装全局登录函数 通过 vue 对象的原型扩展,可以扩展一个函数,这样这个函数就可以在每一个界面通过类似指向对象的方式,去访问这个函数. 如下是 main.js 扩展的函数: Vue.prototype.checkLogin = function(backpage, backtype){    var SUID  = uni.getStorageSync('SUID');    var SRAND = uni.getStorageSync('SRAND');    v…
1.typeof 一元运算符,用来检测数据类型.只可以检测number,string,boolean,object,function,undefined. 对于基本数据类型是没有问题的,但是遇到引用数据类型是不起作用的(无法细分对象) let str = '{}'; let fn = function(){}; let obj = {}; let ary = []; let rg = /\d/; console.log(typeof str);//string console.log(typeo…
开发过程中,日志记录是必不可少的事情,尤其是生产系统中经常无法调试,因此日志就成了重要的调试信息来源. Node.js,已经有现成的开源日志模块,就是log4js,源码地址:点击打开链接 项目引用方法: npm install log4js 1.配置说明(仅以常用的dateFile日志类型举例,更多说明参考log4js-wiki): { "appenders": [ // 下面一行应该是用于跟express配合输出web请求url日志的 {"type": "…
js中setAttribute 的兼容性class和className兼容方法: object.setAttribute("class","content") 在IE8.Chrome.火狐.Opera10中都能设置成功:但是在IE7下无法设置. object.setAttribute("className","content") 只有IE7能设置成功,但是其他浏览器均无法设置. 兼容方法: 使用 object.classNam…
在js中的类型检测目前我所知道的是三种方式,分别有它们的应用场景: 1.typeof:主要用于检测基本类型. typeof undefined;//=> undefined typeof 'a';//=> string typeof 1;//=> number typeof true;//=> boolean typeof {};//=> object typeof [];//=> object typeof function() {};//=> function…
开发过程中,日志记录是不可缺少的事情.尤其是生产系统中常常无法调试,因此日志就成了重要的调试信息来源. Node.js,已经有现成的开源日志模块,就是log4js,源代码地址:点击打开链接 项目引用方法: npm install log4js 1.配置说明(仅以经常使用的dateFile日志类型举例.很多其它说明參考log4js-wiki): { "appenders": [ // 以下一行应该是用于跟express配合输出web请求url日志的 {"type":…
<script>    // var str = '少壮不努力,老大徒伤悲';    // console.log(str instanceof String);    // console.log(typeof str);    //定义一个函数    function fn(){ };    //定义一个对象    var obj = {};    //在对象中,可以包含函数    obj.speak = function(){};    //检测fn是什么数据类型    console.…
今天和大家分享一下 JS 中检测是不是数组的四种方法,虽然篇幅不长,不过方法应该算是比较全面了. 1. instanceof 方法 instanceof 用于检测一个对象是不是某个类的实例,数组也是一种对象所以也可以利用 instaceof 来进行判断. let arr = [1, 2, 3]; console.log(arr.instanceof(Array)); // true 这种方法在只有一个全局作用域的环境下是可以的,但是如果一个网页中包含多个框架,那么就会存在不同的全局环境,不同的环…
PHP常见的call_user_func方法,在JS中有时候会用到,比如你想根据某个动态变量去执行方法. 以前遇到过类似的问题没有解决,现在不太记得具体案例了.今天无意中看到类似文章,学到了.代码如下: <script> function call_user_func(cb, params) { func = window[cb]; func.apply(cb, params); } var funcs = ['test1', 'test2']; for(var i=0;i<funcs.…
Javascript是一门解释型的语言,是基于对象的,并不是真正的面向对象的语言,对变量类型的应用也是宽松的,其实它同样可以模拟面向对象的功能:  1 function myfun1(){  2     //这是私有属性  3     var private1 = "这是私有属性";  4     var privateMethod = function(){  5         alert(private1);  6     }  7     //这是实例属性  8     thi…
在JavaScript中,函数的功能十分强大.它们是第一类对象,也可以作为另一个对象的方法,还可以作为参数传入另一个函数,不仅如此,还能被一个函数返回!可以说,在JS中,函数无处不在,无所不能,堪比孙猴子呀!当你运用好函数时,它能助你取西经,让代码变得优雅简洁,运用不好时,那就遭殃了,要大闹天宫咯~ 除了函数相关的基础知识外,掌握一些高级函数并应用起来,不仅能让JS代码看起来更为精简,还可以提升性能.以下是博主总结的一些常用的.重要的高级函数,加上了一些个人见解,特此记录下来.如果您是JS初学者…
互联网寒冬之际,各大公司都缩减了HC,甚至是采取了“裁员”措施,在这样的大环境之下,想要获得一份更好的工作,必然需要付出更多的努力. 一年前,也许你搞清楚闭包,this,原型链,就能获得认可.但是现在,很显然是不行了.本文梳理出了一些面试中有一定难度的高频原生JS问题,部分知识点可能你之前从未关注过,或者看到了,却没有仔细研究,但是它们却非常重要. 本文将以真实的面试题的形式来呈现知识点,大家在阅读时,建议不要先看我的答案,而是自己先思考一番.尽管,本文所有的答案,都是我在翻阅各种资料,思考并验…