前端开发JS——引用类型
程序员文章站
2022-04-17 22:01:31
10、流程控制语句 注:var obj = {};这里的obj转换boolean语句为true if语句和java是一样的,判断条件也是根据上篇博客提到的假性值 // 弹出一个带输入框的窗口 var value = prompt("请输入。。。"); //输入1 if(value=="1"){ al ......
10、流程控制语句
注:var obj = {};这里的obj转换boolean语句为true
注:var obj = {};这里的obj转换boolean语句为true
if语句和java是一样的,判断条件也是根据上篇博客提到的假性值
// 弹出一个带输入框的窗口 var value = prompt("请输入。。。"); //输入1 if(value=="1"){ alert("true"); //弹框 var inner = 1; } else{ alert("flase"); var inner = 2; } // 打印输出流程语句的变量 console.log(inner); //1
switch条件需要和case匹配值和类型都要相同,另外switch的判断条件可以是string 、number、boolean、char、枚举、null、undefined
var value = prompt("请输入。。。"); //输入1 // value的值这里是字符串1,他不能和数字1匹配 // value的值和类型与case后的值和类型必须相等,才能匹配 value = +value; //转换数值类型 switch(value){ case 1: console.log("yi"); break; //case的值类型可以为函数 case (function(){return 2;})(): console.log("er"); break; case 3: console.log("san"); break; case 4: console.log("si"); break; default: alert("没有匹配值") }
for···in循环对象:
obj = { "name": "xiaohu", "age":20, "gender": "male", a: "sa" } console.log(obj.name); //xiaohu console.log(obj.a); //sa for(key in obj){ console.log(key+"------"+obj[key]); //name------xiaohu,依次输出 }
11、小技巧:
①var d = new date().getdate(); ----->d是一个number类型,sunday=0, monday=1, tuesday=2,······
12、创建对象:
1)使用构造函数创建对象并赋值如:
var obj = new object();
obj.name = "张三";
obj["age"] = 21;
obj.sayhi = function(){};
2)使用字面量创建对象如:
var obj = {
name: "张三",
age: 21,
sayhi: function(){},
}
13、访问对象的属性和方法:
1)通过 对象名.属性名 来访问如:
console.log(obj.name); //张三
console.log(obj.age); //21
console.log(obj.sayhi); //这里并没有执行函数,若执行,在其后添加括号
2)通过 对象名["属性名"] 来访问,也可以自动添加属性名和属性值如:
console.log(obj["name"]); //张三
console.log(obj["age"]); //21
console.log(obj["sayhi"]); //这里并没有执行函数,若执行,在其后添加括号
obj["gender"] = "男";
console.log(obj["gender"]); //男
3)获取对象的属性和值如:
for(var key in obj){
//注:这里就不能使用 . 来访问了,若用点访问,则返回的结果可能是undefined或者是obj对象的key属性名对应的值。
console.log(key,"-----",obj[key]);
}
14、删除对象的属性名及它的值:
delete obj.age; 或者 delete obj["age"];
15、对象序列化和反序列化:
序列化json.stringify(obj):将js对象数据转换为字符串
console.log(json.stringify(obj));
反序列化json.parse(str): 将字符串转换技术对象数据
var str = json.stringify(obj);
console.log(json.parse(str));
16、每一个构造函数都有一个原型对象,实例可以调用对应的构造函数中的原型对象的属性和方法
console.log(object.prototype); //{}
console.log(object.prototype.constructor === object); //true
var obj = {name: "张三"};
console.log(obj.tostring()); //[object object]
console.log(obj.tostring === object.prototype.tostring); //true
console.log(obj.constructor); //[function: object]
1)in 是判断是自有属性或者继承属性
console.log('name' in obj); //true
console.log(tostring' in obj); //true
console.log('aaa' in obj); //false
2)hasownproperty() 判断是不是自有属性 如果重写了,也算是自有属性
console.log(obj.hasownproperty("name")); //true
console.log(obj.hasownproperty("aaa")); //false
3)propertyisenumerable() 判断是不是自有属性并且可枚举
console.log(obj.propertyisenumerable("name")); //true
console.log(obj.propertyisenumerable("tostring ")); //false
4)isprototypeof()判断 object.prototype是不是obj的原型对象
console.log(object.prototype.isprototypeof(obj)); //true
17、函数:
1)函数声明:
----> function 函数名(){
函数体
return; //没有return返回值,默认是undefined
}
-----> var 函数名 = function (){
函数体
return;
}
它们的功能和java的很相似
第二种是一个匿名函数(英文简称 iife)是一种立即执行的函数
匿名函数的使用如:
function(){
console.log("匿名函数");
}
执行这个函数的时候就在大括号后面添加()
2)函数声明提升和变量名声明提升如:
console.log(one); //undefined
function one(){
console.log("打印函数");
}
var one = 123;
console.log(one); //123
这种情况是变量声明在前,函数声明在后,函数声明再覆盖,最后变量再赋值
18、arguments 里存放实参列表,类数组对象,length属性代表存放实参个数,callee属性代表函数
function add(){
var total = 0;
for(var i = 0; i < arguments.length; i++){ //argument = {0:1, 1:2, 2:3, 3:4, 4:5, 5:6, 6:7}
total += arguments[i];
}
return total;
}
var result = add(1,2,3,4,5,6,7);
console.log(result); //28
function test(num){
console.log(arguments.callee); //[function: test]
if(num == 1)
return 1;
else
return num*arguments.callee(num-1); //argument的callee属性指向的是当前函数名,可用于递归,防止函数名重新赋值
}
console.log(test(5)); //120
19、this指向当前函数的作用域( 指向的是函数赖以执行的环境对象)
function test(){
console.log(this); //返回 globa l对象
}
在nodejs环境中返回的是global对象,
在浏览器环境中返回的是window对象
test();
var obj = {
name:'zhangsan',
age: 21,
gender: 'male',
sayhi: function(){
console.log(this); //就会返回{name:'zhangsan', age:21, gender: 'male', sayhi: [function],}
}
}
obj.sayhi();
function createobj(naem, age, gender){
this.name = name;
this.age = age;
this.gender = gender;
}
var obj = new createobj("zhangsan", 22, "nan")
console.log(obj); //返回的是一个对象
推荐阅读
-
前端开发JavaScript入门——JavaScript介绍&基本数据类型
-
一统江湖的大前端(7)React.js-从开发者到工程师
-
前端开发JS——数组
-
python 之 前端开发( JavaScript变量、数据类型、内置对象、运算符、流程控制、函数)
-
前端js日期控件传时间类型到java后台转Date类型
-
前端笔记之JavaScript面向对象(三)初识ES6&underscore.js&EChart.js&设计模式&贪吃蛇开发
-
20170918 前端开发周报之JS前端开发必看
-
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
-
前端开发JS——引用类型
-
BOSS系统中用于web前端js开发的IDE