javascript中对象编程--01

js中基本类型

typeof一元操作符,判断某一个变量的类型,值类型用typeof判断
instanceof 判断一个引用类型的类型

   //理解js中基本类型
   function show(x) {
   		     //四种基本类型:undefined,number,string,boolean
            console.log(typeof x);    // undefined
            console.log(typeof 10);   // number
            console.log(typeof 'abc'); // string
            console.log(typeof true);  // boolean
            
            console.log(typeof function () {});  //function
            console.log(typeof [1, 'a', true]);  //object
            console.log(typeof { a: 10, b: 20 });  //object
            console.log(typeof null);   //object
            console.log(typeof new Number(10)); //object
        }
        
		var fn = function () { };
		console.log(fn instanceof Object);  // true
       

对象是属性的集合

注:javascript中object类型判断规则:object类型在底层被表示为二进制,在js中前三位为0会被判断为object类型。
特别注意: null的二进制表示全是0,所以typeof null 会被判断为"object",但实际上null是javasciprt中的基本类型。这个问题是js语言层面上的bug.

对象,一切(引用类型)都是对象,对象是属性的集合
js中对象的定义比较随意,数组、函数是对象,对象还是对象,对象里面的一切都是属性,对象中没有方法 ,可以给属性赋值,包括常量,函数,对象, 对象可以任意扩展属性

typeof $;//function,$或Jquery 是一个函数

创建对象

所有对象的创建都需要通过一个构造函数,虽然通过语法糖可以省略掉构造函数,但构造函数确实存在。构造函数本身也是一个对象,称之为函数对象,函数对象也可以通过自身的构造函数Funciton()来创建。js中内置函数对象:Object(),Array(),String(),Function()。

function Fn(){
		this.name='herny';
		this.year=2018;
}
var fn1=new Fn();    //  ====>对象可以通过函数创建

//but对象也可以通过字面量来创建,但以下通过语法糖创建对象,本质上仍然是通过构造函数来创建
var obj={a:10,b:20};
var arr = [5, 'x', true];

//以上代码实质
 var obj = new Object();
 obj.a = 10;
 obj.b = 20;
 var arr = new Array();
 arr[0] = 5;
 arr[1] = 'x';
 arr[2] = true;

引用神人的理解:可以通过函数生成对象,函数是对象的妈妈,但是函数本身也是对象,对象生的孩子当然还是对象,但是不能指望孩子和妈妈一模一样。

猜你喜欢

转载自blog.csdn.net/weixin_40719943/article/details/106556424