JavaScript构造函数及原型属性关系
来源:互联网 发布:飞控科技软件下载 编辑:程序博客网 时间:2024/06/05 02:18
对象的constructor属性用于返回创建该对象的函数,也就是我们常说的构造函数,除了创建对象,构造函数(constructor) 还做了另一件有用的事情—自动为创建的新对象设置了原型对象(prototype object),除了创建对象,构造函数(constructor) 还做了另一件有用的事情—自动为创建的新对象设置了原型对象(prototype object) 。在JavaScript中,每个具有原型的对象都会自动获得constructor属性。除了arguments、Enumerator、Error、Global、Math、RegExp、Regular Expression等一些特殊对象之外,其他所有的JavaScript内置对象都具备constructor属性。例如:Array、Boolean、Date、Function、Number、Object、String等。所有主流浏览器均支持该属性。
function Foo(y) {
// 构造函数将会以特定模式创建对象:被创建的对象都会有"y"属性
this.y = y;
}
// "Foo.prototype"存放了新建对象的原型引用
// 所以我们可以将之用于定义继承和共享属性或方法
// 所以,和上例一样,我们有了如下代码:
// 继承属性"x"
Foo.prototype.x = ;
// 继承方法"calculate"
Foo.prototype.calculate = function (z) {
return this.x + this.y + z;
};
// 使用foo模式创建 "b" and "c"
var b = new Foo();
var c = new Foo();
// 调用继承的方法
b.calculate(); //
c.calculate(); //
// 让我们看看是否使用了预期的属性
console.log(
b.__proto__ === Foo.prototype, // true
c.__proto__ === Foo.prototype, // true
// "Foo.prototype"自动创建了一个特殊的属性"constructor"
// 指向a的构造函数本身
// 实例"b"和"c"可以通过授权找到它并用以检测自己的构造函数
b.constructor === Foo, // true
c.constructor === Foo, // true
Foo.prototype.constructor === Foo // true
b.calculate === b.__proto__.calculate, // true
b.__proto__.calculate === Foo.prototype.calculate // true
);
上述代码可表示为如下的关系:
上述图示可以看出,每一个object都有一个prototype. 构造函数Foo也拥有自己的__proto__, 也就是Function.prototype, 而Function.prototype__proto__指向了Object.prototype. 重申一遍,Foo.prototype只是一个显式的属性,也就是b和c的__proto__属性。
new运算符构造函数
function User(name) {
var name = name; //私有属性
this.name = name; //公有属性
function getName() { //私有方法
return name;
}
}
User.prototype.getName = function() { //公有方法
return this.name;
}
User.name = 'Wscats'; //静态属性
User.getName = function() { //静态方法
return this.name;
}
var Wscat = new User('Wscats'); //实例化
注意下面这几点:
调用公有方法,公有属性,我们必需先实例化对象,也就是用new操作符实化对象,就可构造函数实例化对象的方法和属性,并且公有方法是不能调用私有方法和静态方法的;
静态方法和静态属性就是我们无需实例化就可以调用;
而对象的私有方法和属性,外部是不可以访问的。
0 0
- JavaScript构造函数及原型属性关系
- javascript中构造函数、对象、原型关系
- JavaScript构造函数及原型对象
- JavaScript构造函数及原型对象
- JavaScript中构造函数及原型介绍
- javascript--面向对象(四)原型对象,构造函数及实例对象的关系图
- JavaScript中原型、构造函数与对象的关系
- 【JavaScript】JavaScript原型链之原型对象、实例和构造函数三者之间的关系
- Javascript构造函数、原型、对象
- js中对象所属类、对象中原型属性以及构造函数三者的关系
- 什么叫构造函数,原型属性和方法,实例属性和方法以及构造函数原型和实例三者关系
- 理解 javascript 中的 构造函数 原型对象 实例对象 之前的关系
- 【学习笔记】JavaScript中,构造函数、原型对象和实例的关系
- 构造函数的原型属性prototype
- javascript工厂方式、构造函数、原型方式
- javascript 类 构造函数和原型
- Javascript的类,构造函数和原型
- javascript的构造函数和原型
- 数据结构与算法(二)冒泡&&插入&&选择 简单排序
- poj 1753练习
- 3.Java开发中的23种设计模式详解(转)
- android画一条虚线
- BlockingQueue实现生产者、消费者模式
- JavaScript构造函数及原型属性关系
- Jquery 一个表单多个提交按钮
- TotoiseSVN的基本使用方法
- Ubuntu 更新软件出现 /boot 容量不足的警告错误
- 解决genymotion-arm-translation.zip无法拖拽安装的问题
- Learning Spark笔记6-使用key,value
- iframe 不使用滚动条显示所有的内容
- 登录页面Cookie的写法!
- Github系列教程一 「开门」