js面向对象类和对象

接触js已经有几个月了,但是对js的面向对象的一些概念根本就是模糊的,js是一种面向对象的语言 但又不像java一样有class,js不是严格的面向对象语言 ,js在java web开发的地位和java不相上下  ,其中web的数据的反馈现在主流的使用json,json的语法和js的类和属性的创建相似

 

下面介绍一些js的类和对象的创建的技术

 

一:类和对象的调用

 var obj={
	   'id':2,
	   'name':'王珂',
	   'sex':'男'
	 };
	 
	alert(obj.name+" "+obj.id);

 

二:函数创建对象  this指当前类的属性与java相似(原型模式)

//简单对象的创建
    function  myObj(){
	   this.id=1;
	   this.name="王文";
	}
	var b =new myObj();
	//alert(" 对象"+b.id+" "+b.name);

 

 三:构造函数创建类和对象(构造函数模式)

 

	//根据类的属性创建对象
	function createPerson(id,name,sex){
	  this.id=id;
	  this.name=name;
	  this.sex=sex;
	  this.syName=function(){
	      // alert("函数的属性是:"+this.name);
	  }
	}
	//alert(obj.id+""+obj.name+""+obj.sex);
//创建对象
	var person=new  createPerson(obj.id,obj.name,obj.sex);
	//alert("对象的结果是:"+person.id+""+person.name+""+person.sex);
//对象调用	类中的匿名函数
person.syName();

 

 

 四:两次输出的结果都是一样

function Person(name,age,job){ 
         this.name = name; 
	 this.age=age;
         this.job = job; 
         this.sayName = function(){ 
	alert(this.name); 
	}; 
	} 
	
	Person("ansel","30","male"); 
        Person("tanya","30","female"); 
	window.sayName(); 
	window.sayName(); 

 

 

发现两次弹出的都是ansel,这是因为不用new的话,就不是一个person的实例,而仅仅在执行函数。而在全局作用域调用一个函数时this总是指向Global对象。而Global对象在浏览器中就是window对象。

 

 

 

 

 

你可能感兴趣的:(js,面向对象,函数创建类和对象)