当函数对象本身的属性或方法与原型的属性或方法同名的时候:

1、默认调用的是函数对象本身的属性或方法.
2、通过原型增加的属性或方法的确是存在的.
3、函数对象本身的属性或方法的优先级要高于原型的属性或方法.

 

//面向对象写法

var xiaoming=[];

 xiaoming.name="xm";

 xiaoming.showname=function  () {

  alert(this.name);

 }

 xiaoming.showname(); //调用

 

// 工程函数

function creatname(name){

//原料

var xiaoming=[];

//加工

 xiaoming.name=name;

 xiaoming.showname=function  () {

  alert(this.name);

 }

//出厂

 return  xiaoming;

}

creatname("小刚").showname();//传参数调用

creatname("小里").showname();

 

 

// 工程函数

function creatname(name){

//原料

var xiaoming=[];

//加工

 xiaoming.name=name;

 xiaoming.showname=function  () {

  alert(this.name);

 }

//出厂

 return  xiaoming;

}

 

var p=creatname("小刚33");  //函数负值

//p.showname();

alert(p.name);//调用

 

/* 当new去调用一个函数:这个时候函数中的this就是创建出来的对象,而且函数的返回值直接就是this啦(隐式返回)

 new后面调用的函数:叫做构造函数*/

 

function Creatname(name){

 this.name=name;

 this.showname=function  () {

  alert(this.name);

 }

}

 

 

/* 

面向对象的写法

function 构造函数(){

对象.属性

}

构造函数.原型.方法=function(){}

*/

 

function Creatname(name){

 this.name=name;

}

var p=new Creatname("小刚666");

var p1=new Creatname("小刚666");

Creatname.prototype.showname=function(){

alert(this.name);

}

alert(p.name);

alert(p.showname==p1.showname);