JavaScript 常用基础知识

1、数据类型:

1)原始类型: String Boolean Number Null Undefiend

2)引用类型:Object ..........

总结:为什么老生常谈数据类型呢?在开发中他们到底数据类型有什么指引,我从不纠结Null到底是Object类型还是Undefiend类型,没意义的东西不需要花费时间。但是,这里他告诉我们的是:原始类型永远是对象的拷贝,传值不传址;然而,引用类型则传的是引用,改变一个对象的引用会影响对象本身!所以,一定要记住5大原始数据类型。

/** 原始类型操作,传值不传址*/
var str = ‘hello wrolld‘;
function changeStr(str) {
  str = ‘welcome‘;
}
changeStr(str);
console.info(str);
/** 对象引用操作,对象的引用发生改变,那么会改变其他的对象引用*/
var str = {
  key: ‘hello world‘
};
function changeStr(str) {
  str.key = ‘welcome‘;
}
changeStr(str);
console.info(str.key);

2、对象属性

1)obj.property

2)obj[property]

总结:从来就没有什么get方法来获取属性值的,都是语言学习多了搞混了。就好像,在Java中经常使用for(String str : list ) ; 然而在Javascript中如果这样使用那么必然错误,Javascript我们应该这样使用 for(var str in list ) ; 有些时候就是一不小心踩雷了!关于对象属性,不要以为上面两种方法是相同的,其实二者差异还是有的,obj.property 那么property必须不能是变量,只是一个obj定义的属性名称,而且这个名称必须符合Javascript变量命名规范,否则你是无法调用的,因为Javascript的对象可以把1作为属性名称,但是他是不符合命名规范的。如果你使用obj[property] 那就不一样了,property是一个变量,这个变量可以是任意的(比如数组遍历的时候是数字,属性遍历的时候可能是字符串等),他也能获取对象对应的属性值。所以,如果知道某个对象的属性我们可以使用obj.property ; 如果我们不知道你们应该采用第二种。

var obj = new Object();
obj.name = ‘maven‘;//必须符合变量的命名规范
obj[1] = ‘git‘;//可以像数组一样建立索引,也就是一个属性
obj[{name:‘svn‘}]=‘cvs‘;// 可以传入任何变量
for (var attr in obj) {
  console.info(obj[attr]);
}

3、删除对象的属性

1) delete obj.property

2) delete obj[property]

总结:网上看了很多资料,说删除一个对象的属性就是把他的值设置为 undefined 或 Null ,说实话,我开始的时候真的相信了,因为,对象不存在就不是undefined吗?后面,当我真正对代码测试才发现被坑了,对象的属性是无法通过赋值来删除的,不信你可以自己用for in 去试试,结果就是这样。尤其是,我在把一个对象转为JSON字符串的时候想要删除对象的一个属性,如果你只是赋值为Null ,那么转为JSON不还是有Null值吗?所以,我们应该采取以上的方式真正的删除对象的属性,让对象的属性不存在,即使使用for in  也无法遍历出来。

var obj = {};
obj.name = ‘key‘;
obj.value = ‘mavne‘;
obj.age =12;
obj.phone= 156;
obj.identify = ‘@dfd_dfd‘;

console.info(JSON.stringify(obj))
delete obj[‘value‘]; // 删除属性value
delete obj.name; // 删除属性 name
obj.identify = undefined; // 属性依旧存在,但是如果采用以下方法获取JSON字符串是不会得到identify属性的
obj.age = null;// 属性依旧存在,实质删除了属性对应的值,转为JSON字符串时还是有这个属性
console.info(JSON.stringify(obj))

4、删除数组中指定的元素

1)arrayObj.pop(); //移除最后一个元素并返回该元素值

2)arrayObj.shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移

3)arrayObj.splice(deletePos,deleteCount); //删除从指定位置deletePos开始的指定数量deleteCount的元素,返回所移除的元素

4)delete array[property];//删除指定位置的元素,如果删除则返回true,否则返回false

总结:到底数组的是对象还是对象是数组呢?说实话,二者真的好像,我还是有点赞同数组是对象一说,因为Java里面是在这样说的,一切万物皆对象,估计也包括数组吧!然而,Javascript如果想要删除数组中指定的元素,可以是使用如上四种方法,前面两种限制条件太多,很少使用,后面两种的差异是,arrayObj.splice(deletePos,deleteCount);可以删除多个元素,而且是以删除元素的数组形式返回,而delete array[property]只能一次性删除一个元素,而且返回的是Boolean形式的值。当然二者都是基于数组自身的操作,换句话会说:他们的操作会改变数组本身。另外,Java删除集合中指定元素时,如果是在循环中删除还要用迭代器,否则会报错,而Javascript在循环中删除是不会出现这种错误,所以循环中删除也是没问题的。

var array = new Array();
array[0] = {name:‘k1‘,value:‘dd‘}
array[1] = {name:‘k2‘,value:‘dd‘}
array[2] = {name:‘k3‘,value:‘dd‘}
array[3] = {name:‘k4‘,value:‘dd‘}
array[4] = {name:‘k5‘,value:‘dd‘}
array[5] = {name:‘k6‘,value:‘dd‘}

for(var i = 0 ; i < array.length ; i++){
  console.info(i);
  if( i == 2){
    var obj = array.splice(i,1); // 数组自带删除元素的方法,返回一个数组
    console.info(obj[0].name);
    //delete array[i]; 删除对象属性的方法,把数组看成一个对象,然后进行删除属性操作,返回一个Boolean值
  }
}

for(var obj in array){
  console.info(array[obj]);
}
时间: 2024-10-25 05:55:12

JavaScript 常用基础知识的相关文章

javascript的基础知识及面向对象和原型属性

自己总结一下javascript的基础知识,希望对大家有用,也希望大家来拍砖,毕竟是个人的理解啊 1.1 类型检查:typeof(验证数据类型是:string) var num = 123; console.log(typeof num); // 1.2 in 运算符 作用:判断指定属性是否存在于指定的对象中. 如果指定的属性存在于指定的对象中,则 in 运算符会返回 true. 语法: 属性 in 对象 返回值:true 或者 false 示例: var obj = { age: 18 };

R语言常用基础知识

seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),    length.out = NULL, along.with = NULL, ...) 举例----------Examples----------seq(0, 1, length.out=11) seq(stats::rnorm(20)) #  seq(1, 9, by = 2)     #  seq(1, 9, by = pi)    #  seq(1, 6, by =

SpringMVC常用基础知识

常用注解元素 @Controller 标注在Bean的类定义处 @RequestMapping 真正让Bean具备 Spring MVC Controller 功能的是 @RequestMapping 这个注解 @RequestMapping 可以标注在类定义处,将 Controller 和特定请求关联起来: 还可以标注在方法签名处,以便进一步对请求进行分流 配套的属性有: value 需要跳转的地址 method 基于RestFul的跳转参数,有RequestMethod.get post p

整理JavaScript高级基础知识

整理JavaScript高级基础知识 因为空余时间很多..所以博客更新频率得相对频繁些.. 原型以及原型链 考察原型以及原型链: var object = {} object.__proto__ === Object.prototype // 为 true var fn = function(){} fn.__proto__ === Function.prototype // 为 true fn.__proto__.__proto__ === Object.prototype // 为 true

JavaScript 之基础知识

JavaScript 基础知识 JavaScript 是属于网络的脚本语言! JavaScript 被数百万计的网页用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用. JavaScript 是因特网上最流行的脚本语言. JavaScript 很容易使用!你一定会喜欢它的! JavaScript 简介 在数百万张页面中,JavaScript 被用来改进设计.验证表单.检测浏览器.创建cookies,等等等等.JavaScript 是因特网上最流行的脚本语言,并且可在所有主要的

[JavaScript]ES5基础知识总结

1.JavaScript是一门动态语言,ES6的出现弥补了Js在大型项目上的乏力(有了"类"). 以下是关于ES5的基础知识: 2. JavaScript 与C++或Java 这种传统的面向对象语言不同,它实际上压根儿没有类.该语言的一切都是基于对象的,其依靠的是一套原型(prototype)系统.而原型本身实际上也是一种对象. 3. 封装:封装概念常由两部分组成:(1)相关的数据(用于存储属性)(2)基于这些数据所能做的事(所能调用的方法) 4. 在JavaScript 中,还有一种

JavaScript语言基础知识总结

1: JavaScript  DOM的基本操作: 2:JavaScript变量的用法 3:JavaScript函数基础 4:JavaScript流程语句 5 : JavaScript数据类型 6:JavaScript数组的应用 7:JavaScript运算符 8:JavaScript正则表达式 9:JavaScript字符串操作函数 10: window 操作对象

JavaScript入门基础知识总结(2)

/* JavaScript基础学习总结 *******该总结用DW写作,为了调试方便,将影响测试的部分以注释形式写出****/ //所有测试以alert()函数显示 //1.if条件句 function funIf(){ var date = new Date();//得到一个新的日期 var time = date.getHours();//从日期中得到当前的小时 if(time < 10){ alert("早安!"); }else if( time < 13){ ale

GISer常用基础知识清单

有一些基础性的知识是工作中常用的,很多都是最基础的概念性的东西,好像都是和坐标相关的. 有一些公式常用但总记不住,有一些概念没法不能牢记和说清,所有总结一下. 这篇随笔先列个表,列举下知识点的名字(后续想到了.遇到了会更新). GIS知识分类 我认为GIS知识分3类: G--测绘.平差.地图学基础--测绘方面 I--数据库.开发--IS方面 S--GIS原理 其中GIS原理会与前面的测绘和IS知识有重合部分,不如说GIS原理就是在介绍前二者是如何结合起来的 GIS原理会以一种观点把测绘知识和IS