分类标签归档:javascript

javascript getOwnPropertyDescriptor 函数


使用 ECMAScript 5 的 Object.getOwnPropertyDescriptor()方法,可以取得给定属性的描述 符。这个方法接收两个参数:属性所在的对象和要读取其描述符的属性名称。返回值是一个对象,如果 是访问器属性,这个对象的属性有 configurable、enumerable、get 和 set;如果是数据属性,这 个对象的属性有 configurable、enumerable、writable 和 value。

var book = {};
Object.defineProperties(book, {
    _year: {
        value:...

Read more

javascript defineProperty 函数


属性
1. 数据属性
数据属性包含一个数据值的位置。在这个位置可以读取和写入值。数据属性有 4 个描述其行为的
特性。
[[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。像前面例子中那样直接在对象上定义的属性,它们的
这个特性默认值为 true。

[[Enumerable]]:表示能否通过 for-in 循环返回属性。像前面例子中那样直接在对象上定义的属性,
它们的这个特性默认值为 true。

[[Writable]]:表示能否修改属性的值。像前面例子中那样直接在对象上定义的属性,
它们的这个特...

Read more

call,apply,方法的使用


//apply和call的使用方法 /*

* apply的使用语法
* 函数名字.apply(对象,[参数1,参数2,...]);
* 方法名字.apply(对象,[参数1,参数2,...]);
* call的使用语法
* 函数名字.call(对象,参数1,参数2,...);
* 方法名字.call(对象,参数1,参数2,...);
*
* 作用:改变this的指向
* 不同的地方:参数传递的方式是不一样的
*
* 只要是想使用别的对象的方法,并且希望这个方法是当前对象的,那么就可以使用apply或者是call的方法改变this的指向
*
* */
  //方法改变this的指向...

Read more

继承 属性和方法


//为了数据共享,改变原型指向,做到了继承---通过改变原型指向实现的继承 //缺陷:因为改变原型指向的同时实现继承,直接初始化了属性,继承过来的属性的值都是一样的了,所以,这就是问题 //只能重新调用对象的属性进行重新赋值,

//解决方案:继承的时候,不用改变原型的指向,直接调用父级的构造函数的方式来为属性赋值就可以了------借用构造函数:把要继承的父级的构造函数拿过来,使用一下就可以了



//借用构造函数:构造函数名字.call(当前对象,属性,属性,属性....);
//解决了属性继承,并且值不重复的问题
//缺陷:父级类别中的方法不能继承

functio...

Read more

原型指向改变


//人的构造函数 function Person(age) { this.age = 10; }

//人的原型对象方法
Person.prototype.eat = function () {
console.log("人的吃");
};

//学生的构造函数
function Student() {

}

Student.prototype.sayHi = function () {
console.log("嗨,小苏你好帅哦");
};
// //学生的原型,指向了一个人的实例对象
Student.prototype=new Person(10);

// ...

Read more

为内置对象添加原型方法


//为内置对象添加原型方法

var arr=new Array(10,20,30,40,50);
   arr.join("|");
   console.dir(arr);


   var str=new String("哦,唛嘎的");
   str.indexOf("哦");
   console.dir(str);


   var dt=new Date();
   dt.getFullYear();
   console.dir(dt);

//实例中的方法如果没有,去创建该实例对象的构造函数的原型对象中找



//我们能否为系统的对象的原型中添加方法,相当于在改变源码
...

Read more

构造函数与原型对象和实例对象的关系


构造函数与原型对象和实例对象的关系

//通过构造函数实例对象,并初始化
//var arr=new Array(10,20,30,40);
//join是方法,实例对象调用的方法
//arr.join("|");
//console.dir(arr);
//join方法在实例对象__proto__原型
//console.log(arr.__proto__==Array.prototype);


//原型的作用之一:共享数据,节省内存空间
//构造函数
function Person(age,sex) {
  this.age=age;
  this.sex=sex;
}
//通过构造...

Read more

js 原型


//构造函数

function Person(sex,age) {
this.sex=sex;
this.age=age;
}
//通过原型添加方法
Person.prototype.sayHi=function () {
console.log("打招呼,您好");
};
var per=new Person("男",20);
console.log(per.__proto__.constructor==Person.prototype.constructor);//实例对象
console.dir(Person);//构造函数的名字

var per2=new Person("女",...

Read more