JavaScript基础 ----- 一些概念杂谈(3)

1.this指向:

(1)new 调用时指的是被构造的对象;

(2)call,apply 调用,指向我们指定 的对象;

(3)对象调用时,this 指向那个对象;

(4)默认状况下,指向全局变量 window;

var add = function(){
    console.log(this)        //指向window
}
add()

function str(){
    console.log(this)        //指向window
}
str()

2.构造函数,原型:

function Add(){
    this.a = function(){
        return "hello"
    }
}
Add.prototype.b = function(){
    return "world"
}
var add = new Add();
console.log(add.a());            //输出"hello"
//或者这样写
var add1 = new Add().a();
console.log(add1)                //输出"hello"
//调用原型
var add2 = new Add().b();
console.log(add2)                //输出"world"  

3.数据类型的转换和比较:

(1)数据类型可以分为两大类:不可改变的原始数据类型,和可以改变的引用数据类型;

(2)原始数据类型:number,string,undefined,boolean,null

         引用数据类型:object,array,date,function。。。。

(3)检测数据类型(typeof):

         typeof 可返回的值有七个:number,string,boolean,object,function,undefined,symbol(es6新增)

console.log(typeof {})           //object
console.log(typeof [])           //object
console.log(typeof null)         //object 
console.log(typeof Array)        //function
console.log(typeof Function)     //function
console.log(typeof NaN)          //number

        当返回值相同时,如何区分它们:

var obj = {};
var arr = [];
console.log(typeof obj);          //object
console.log(typeof arr);          //object
//如何区分它们?
var a = Object.prototype.toString.call(obj);
console.log(a);                   //[Object Object]

var b = Object.prototype.toString.call(arr);
console.log(b);                   //[Object Array]

(4)数据类型的转换:

         Boolean():将任何类型转换成 true 和 false;

         Number():将任何类型转换成数值类型以及 NaN;

         String():将任何类型转换成字符串;

console.log(Boolean([]))        //true
//Boolean转换时,除以下几种为false,其余的都为true;
console.log(Boolean(''))        //false
console.log(Boolean(undefined))   //false
console.log(Boolean(null))     //false
console.log(Boolean(0))        //false
console.log(Boolean(NaN))       //false
console.log(Number({}))             //NaN
console.log(Number(undefined))      //NaN
console.log(Number(NaN))            //NaN
console.log(Number([]))             //0
console.log(Number(false))          //0
console.log(Number(null))           //0
console.log(Number(true))           //1
console.log(Number(123))            //123
console.log(Number("123"))          //123	

(5)"==" 运算符:

         本身就是两个 boolean 值进行比较,但是在比较前,会转换成 number ,再进行比较;

console.log(([])?true:false);
//等同于 console.log(true?true:false)      输出:true
console.log(([]==false?true:false));
//等同于 console.log(0 == 0?true:false)    输出:true
console.log(({}==false)?true:false)
//等同于 console.log(NaN == 0?true:false)  输出:false
//NaN 不等于任何值,包括它自己

       注意:三目表达式本身就代表 if 判断语句;

                  NaN 不等于任何值,包括它自己;

(6)null 和 undefined 的区别:

         null 本身是一个对象,但这个对象不存在;(不存在)

         undefined 表示一个对象或者变量没有赋值;(存在,但是没有值)

         undefined 和 null 与任何有意义的值比较返回的都是 false;但它们相互间比较返回true;

console.log(null == undefined)          //输出 true
console.log(undefined == false)         //输出 false
console.log(null == false)              //输出 false

(7)toString() 方法:

         当在 toString() 中传入的参数为一个整数时(不能为1),它表示的是转换成进制;

var a = 123;
console.log(a.toString(2))          // 二进制:1111011
console.log(a.toString(8))          // 八进制:173
console.log(a.toString(10))         // 十进制(本身):123
console.log(a.toString(16))         // 十六进制:7b

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值