码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript基础知识

时间:2019-07-16 10:22:40      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:animal   保存   实例   sea   nts   htm   表达式   导致   +=   

如何检测变量是一个String类型

方法1

 
 
function isString(obj){
    return typeof(obj) === "string"? true: false;
    // returntypeof obj === "string"? true: false;
}
 

方法2

 
 
 
 
 
function isString(obj){
    return obj.constructor === String? true : fales;
}
 

方法3

 
 
function isString(obj){
  return Object.prototype.toString.call(obj) === "[obj String]"? true : false;
}
 

 


 

去除空格字符串

方法一:使用replace正则匹配的方法

去除所有空格: str = str.replace(/\s*/g,"");      

去除两头空格: str = str.replace(/^\s|\s$/g,"");

去除左空格: str = str.replace( /^\s*/, “”);

去除右空格: str = str.replace(/(\s*$)/g, "");

 
 
 
var str = "23 23";
var str2 = str.replace(/\s*/g,"")
console.log(str2)  //2323
 

方法二:使用str.trim()方法

str.trim()局限性:无法去除中间的空格,实例如下:

 
 
 
 
 
var str = " xiao ming "
var str2 = $.trim(str)
console.log(str2) // xiao ming
 

 


 

你如何获取浏览器URL中查询字符串中的参数?

##测试地址为:http://www.runoob.com/jquery/misc-trim.html?channelid=12333&name=xiaoming&age=23

实例如下:

 
 
 
 
 
function showWindowHref(){
    var sHref = window.location.href;
    var args = sHref.split(‘?‘);
    if(args[0] == sHref){
        return "";
    }
    var arr = args[1].split(‘&‘);
    var obj = {};
    for(var i = 0;i< arr.length;i++){
        var arg = arr[i].split(‘=‘);
        obj[arg[0]] = arg[1];
    }
    return obj;
}
var href = showWindowHref(); // obj
console.log(href[‘name‘]); // xiaoming
 

 


 

js 字符串操作函数

列举了常用的字符串函数,具体使用方法,请参考网址

  • concat() – 将两个或多个字符的文本组合起来,返回一个新的字符串。

  • indexOf() – 返回字符串中一个子串第一处出现的索引。如果没有匹配项,返回 -1 。

  • charAt() – 返回指定位置的字符。

  • lastIndexOf() – 返回字符串中一个子串最后一处出现的索引,如果没有匹配项,返回 -1 。

  • match() – 检查一个字符串是否匹配一个正则表达式。

  • substr() 函数 -- 返回从string的startPos位置,长度为length的字符串

  • substring() – 返回字符串的一个子串。传入参数是起始位置和结束位置。

  • slice() – 提取字符串的一部分,并返回一个新字符串。

  • replace() – 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串。

  • search() – 执行一个正则表达式匹配查找。如果查找成功,返回字符串中匹配的索引值。否则返回 -1 。

  • split() – 通过将字符串划分成子串,将一个字符串做成一个字符串数组。

  • length – 返回字符串的长度,所谓字符串的长度是指其包含的字符的个数。

  • toLowerCase() – 将整个字符串转成小写字母。

  • toUpperCase() – 将整个字符串转成大写字母。


 

怎样添加、移除、移动、复制、创建和查找节点?

1. 创建新节点

createDocumentFragment() //创建一个DOM片段
createElement() //创建一个具体的元素
createTextNode() //创建一个文本节点
 

2. 添加,移除,替换,插入

 
 
appendChild() //添加
removeChild() //移除
replaceChild() //替换
insertBefore() //插入
 

3.查找

 
getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值
getElementById() //通过元素Id,唯一性
 

 


 

三个使用this的典型应用

1. 在html元素事件属性中使用,如:

 
<input type=”button” onclick=”showInfo(this);” value=”点击一下”/>
 

2.构造函数

 
 
function Animal(name, color) {
  this.name = name;
  this.color = color;
}
 

3.input点击,获取值

 
 
 
<input type="button" id="text" value="点击一下" />
<script type="text/javascript">
    var btn = document.getElementById("text");
    btn.onclick = function() {
        alert(this.value);    //此处的this是按钮元素
    }
</script>
 

 


 

比较typeof与instanceof?

相同点:JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的。

typeof的定义和用法:返回值是一个字符串,用来说明变量的数据类型。

细节:

(1)、typeof 一般只能返回如下几个结果:number,boolean,string,function,object,undefined。

(2)、typeof 来获取一个变量是否存在,如 if(typeof a!="undefined"){alert("ok")},而不要去使用 if(a) 因为如果 a 不存在(未声明)则会出错。

(3)、对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性。

Instanceof定义和用法:instanceof 用于判断一个变量是否属于某个对象的实例。

实例演示:

 
a instanceof b?alert("true"):alert("false"); //a是b的实例?真:假
?
var a = new Array(); 
alert(a instanceof Array);  // true
alert(a instanceof Object)  // true
 

如上,会返回 true,同时 alert(a instanceof Object) 也会返回 true;这是因为 Array 是 object 的子类。

function test(){};
var a = new test();
alert(a instanceof test)   // true
 

细节:

如下,得到的结果为‘N’,这里的 instanceof 测试的 object 是指 js 语法中的 object,不是指 dom 模型对象 

if (window instanceof Object){ alert(‘Y‘)} else {  alert(‘N‘);}  // ‘N‘
 

 


 

如何理解闭包?

 

1、定义和用法:当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的其它变量,如果返回的这个函数在外部被执行,就产生了闭包。

2、表现形式:使函数外部能够调用函数内部定义的变量。

3、实例如下:

(1)、根据作用域链的规则,底层作用域没有声明的变量,会向上一级找,找到就返回,没找到就一直找,直到window的变量,没有就返回undefined。这里明显count 是函数内部的flag2 的那个count 

 
var count = 10
function add(){
  count = 0
  return function (){
    count+=1
    alert(count)
  }
}
var s = add()
s(); //1
s(); //2
 

4、变量的作用域

要理解闭包,首先必须理解Javascript特殊的变量作用域。

变量的作用域分类:全局变量和局部变量。

特点:

1、函数内部可以读取函数外部的全局变量;在函数外部无法读取函数内的局部变量。

2、函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!

 5、使用闭包的注意点

1)滥用闭包,会造成内存泄漏:由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

2)会改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

 

 

JavaScript基础知识

标签:animal   保存   实例   sea   nts   htm   表达式   导致   +=   

原文地址:https://www.cnblogs.com/guojiayu/p/11192964.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!