10、流程控制语句
     注: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); //
     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循环、while循环、do···while循环和Java的一模一样,但是js里面的变量外部也可以使用。

  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);    //返回的是一个对象
 
 
 
 
 
 
 
 
 
 
 
 
 

前端开发JS——引用类型的更多相关文章

  1. 前端开发JS白板编程题目若干

    在前端开发参加面试的时候,无论是校招还是社招,往往都会碰到让我们直接在白纸或者白板上手撸代码的题目.由于是手撸代码,这些题目肯定不会过于复杂和冗长,否则面试那么一小会时间根本写不完.本文总结了几个我本 ...

  2. 前端开发JS——快速入门

    1.JS的核心标准ECMAScript        组成      ECMAScript------>核心语法标准      DOM------------->对文档节点的操作      ...

  3. [JS前端开发] js/jquery控制页面动态加载数据 滑动滚动条自动加载事件

    页面滚动动态加载数据,页面下拉自动加载内容 相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多 有手机的相信都见过这样的效果:进入qq空间,向下拉动空 ...

  4. ES6 常用总结(前端开发js技术进阶提升总结)

    一.变量声明const和let 在ES6之前,我们都是用var关键字声明变量.无论声明在何处,都会被视为声明在函数的最顶部(不在函数的最顶部就在全局作用域的最顶部).这就是函数变量提升例如: 不用关心 ...

  5. [JS前端开发] js/jquery控制页面动态载入数据 滑动滚动栏自己主动载入事件

    本人小菜鸟一仅仅.为了自我学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识,小菜鸟创建了一个群.希望光临本博客的人能够进来交流.寻求 ...

  6. Web前端开发--JS技术大梳理

    什么是JS      JavaScript是一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语 ...

  7. 前端开发JS——数组

    25.数组 1)声明数组: ①构造函数创建数组 var arr = new Array(); console.log(arr):        //[]   var arr = new Array(2 ...

  8. 前端开发 —— js 常用工具函数(utilities)

    1. 时间 function getCurTime() { var date = new Date(); return date.toLocaleTimeString(); } date.toLoca ...

  9. [浪风前端开发]JS获取当前时间戳的方法

    由于最近在研究轻交互式web设计,所以整理了下面的东东,仅供分享测试学习交流之用. JavaScript 获取当前时间戳:第一种方法: var timestamp = Date.parse(new D ...

随机推荐

  1. arcgis api 3.x for js 地图加载多个气泡窗口展示(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  2. Excel 扩展编程相关

    ============================产品分析============================Excel Automation Tools (Best of List)htt ...

  3. Eclipse为不同的文件类型设置编码格式和编辑器

    不知道大家遇到项目中编码格式不统一的情况没有,哈哈,我们就是,比如java的编码格式是GBK,html等编码是UTF-8,这样会导致很多问题,比如提交了一个UTF-8的java文件到SVN,会导致后端 ...

  4. [Linux] 编写Dockerfile文件自动构建镜像

    Dockerfile是一个文本文件,按顺序包含构建给定镜像所需的所有命令Docker通过读取Dockerfile中的指令自动构建图像 . Dockerfile遵循特定的格式和指令集,您可以在Docke ...

  5. java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8E' for column 'name' at row 1

    我的错误案例: ,这个后台插不进去,就姓名那栏的中文编码问题. 遇到这个错误,应该是创建表的时候没有设置好编码,这个错误不用多想,我也试过在更改表那里设置编码,但还是不行,还是有残留 直接drop t ...

  6. 一些有价值bug产生的思考

    1.异步处理时防止重复点击的逻辑校验 场景 打款请求时,进入异步处理的队列,生成一个任务号,存在如数据库,且状态为未完成.此时,如果并发操作,如重复点击或者重复调用接口,则发出的两条请求可能被分配到不 ...

  7. mysql从命令行执行sql语句

    mysql -u root -p -e "create database mydb;"

  8. lua 10 迭代器

    转自:http://www.runoob.com/lua/lua-iterators.html 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表 ...

  9. ABP docker发布

    环境:CentOS 7.6 64位 linux基本命令: cd:进入某个文件夹 mkdir:创建文件夹 ls:显示文件 ll:罗列出当前文件或目录的详细信息 判断是文件 还是文件夹: Linux系统中 ...

  10. 【BZOJ4556】[TJOI2016&HEOI2016] 字符串(后缀自动机+线段树合并+二分)

    点此看题面 大致题意: 给你一个字符串\(s\),每次问你一个子串\(s[a..b]\)的所有子串和\(s[c..d]\)的最长公共前缀. 二分 首先我们可以发现一个简单性质,即要求最长公共前缀,则我 ...