CSS - 架构
感觉原型真是 JS 中非常复杂的一环。看 MDN 的文档某些地方也不是写的很清楚,下面写一些我对于原型的理解,如有错误望大家指出。
感觉prototype和[[Prototype]]挺容易混的,看 ES 的文档时也是在看到prototype.constructor时很蒙。
根据我的经验prototype一般只有构造函数(函数)有,毕竟她可以创建对象(实例),其他对象,数组,字符串什么的没有必要有她。
所有的的对象都有自己的原型链([[Prototype]]),
她会继承(指向)其构造函数的prototype,
她的构造函数的[[Prototype]]会继承(指向)其构造函数的prototype,
她的构造函数的[[Prototype]]会继承(指向)其构造函数的prototype,
她的构造函数的[[Prototype]]会继承(指向)其构造函数的prototype,
她的构造函数的[[Prototype]]会继承(指向)其构造函数的prototype,
。。。
最终指向 null 结束。
这样就和类一样了。
prototype
对象的prototype 属性表示她的原型,该属性里面包含着可以被 “继承” 的属性。(一般只有函数自带个属性)
var foo = function(){}
foo.prototype.bar = 666;
// foo对象
// {
// ...
// prototype: {
// ...
// bar: 666
// }
// }
prototype.constructor
对象的prototype 属性里面有个特殊的属性constructor ,她是指向该对象的指针(这里可能有误 T_T )。(一般只有函数自带个属性)
var foo = function(){}
foo.prototype.bar = 666;
// foo对象
// {
// ...
// prototype: {
// ...
// constructor: foo,
// bar: 666
// }
// }
prototype.[[Prototype]]
对象的prototype 属性里面还有个特殊的 "属性"[[Prototype]] ,可以用来模拟继承,她指向该对象的prototype 属性的继承下来的原型(指向该对象继承的原型的prototype属性的指针)。
[[Prototype]] 也叫 prototype.__proto__
对象的构造函数的原型(指向创建该对象的函数的prototype属性的指针)。(一切对象都有这个虚拟指针)
Object.prototype.proto - JavaScript | MDN
[[Prototype]].constructor
对象的构造函数的原型的构造器(指向创建该对象的函数的prototype属性中的constructor属性的指针)。(一切对象都有这个虚拟指针)
关系对比
// Person
var Person = function (name) {
this.name = name;
this.canTalk = true;
};
Person.prototype.greet = function () {
if (this.canTalk) {
console.log('Hi, I am ' + this.name);
}
};
// Employee
var Employee = function (name, title) {
Person.call(this, name);
this.title = title;
};
// subclass extends superclass
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;
Employee.prototype.greet = function () {
if (this.canTalk) {
console.log('Hi, I am ' + this.name + ', the ' + this.title);
}
};
// instantiation
var joe = new Person('Joe');
var bob = new Employee('Bob', 'Builder');
// call function
joe.greet();
bob.greet();
// 直接打印
console.log(Person, Employee, joe, bob)
// prototype:当前对象的原型对象(实例 joe 和 bob 没有prototype)
console.log(Person.prototype, Employee.prototype, joe.prototype, bob.prototype)
// __proto__:返回当前对象构造函数的原型(代表的是 Obj.[[Prototype]])
console.log(Person.__proto__, Employee.__proto__, joe.__proto__, bob.__proto__)
// constructor:返回当前对象构造函数的引用(代表的是 Obj.[[Prototype]].constructor)
console.log(Person.constructor, Employee.constructor, joe.constructor, bob.constructor)
CSS - 架构的更多相关文章
- CSS架构
CSS架构 有趣的是,我们通常不这样评判其他语言.一个Rails开发者不会因为他写的代码规范就认为他是一个好的开发者.因为这是最基本的.当然它必须是满 足规范,除此以外还要考虑其他方面:代码是否有可读 ...
- CSS框架分析与网站的CSS架构
框架(framework)是一个基本概念上的结构,用于去解决或者处理复杂的问题,是一种可复用的构架. 我们对CSS框架这个词比较陌生,但对于JavaScript框架就比较熟悉了,比如jQuery 但为 ...
- css架构目标:预测,重用,扩展,维护
请参看下面链接: CSS架构目标:预测.重用.扩展.维护
- CSS架构目标
擅长CSS的Web开发人员不仅可以从视觉上复制实物原型,还可以用代码进行完美的呈现.无需使用表格.尽可能少的使用图片.如果你是个名副其实的高手,你可以快速把最新和最伟大的技术应用到你的项目中,比如媒体 ...
- 我的CSS架构
写在前面 都是自己看别人的架构,自己积累下来的一些东西,这里只是阐述自己的一些观念.借此希望同行交流交流下看法,共勉. 不同架构的CSS 业务流程不同,团队配员不同.会有各种各样的CSS架构. 有的会 ...
- CSS架构的优选和解决方案
背景 上周我厂前端小伙伴们开了一个技术交流会,关于如何优选CSS架构.解决掉平时写CSS时频繁出现的各种问题,这是前端人员老生常谈的问题,但却很少搬上台面,铺开正式地开交流会.这次会议,便是围绕CSS ...
- 20151224今天发现到的两篇关于CSS架构、可复用可维护CSS和CSS学习提升能有改变思想观念意识的文章 分别是CSS架构目标和说说CSS学习中的瓶颈
多讲一个,CSS全称是什么?CSS全称为Cascading Style Sheets,中文翻译为“层叠样式表”,简称CSS样式表又被我们称为CSS样式,CSS样式又被作为一种能制作出各种样式网页的技术 ...
- html与css架构的一点体验
css本身,可以说是一门非常简单而容易入门的语言.制作一个页面,或者制作一个小企业站,对于css的要求都是非常低的.只要熟悉语法,通过英文单词的含义猜,都基本可以拼出一套样式.更何况市面上还有各种各样 ...
- 通过CSS设计模式搭建自己系统的CSS架构
theme: qklhk-chocolate 传统的CSS书写风格是随意命名,堆叠样式,造成了混乱不堪的结果,复杂页面的样式书写通常会出现几百行甚至上千行的代码,CSS设计模式在实际应用中的横空出世拯 ...
- Vue3 企业级优雅实战 - 组件库框架 - 4 组件库的 CSS 架构
在前一篇文章中分享了搭建组件库的基本开发环境.创建了 foo 组件模块和组件库入口模块,本文分享组件库的样式架构设计. 1 常见的 CSS 架构模式 常见的 CSS 架构模式有很多:OOCSS.ACS ...
随机推荐
- Go语法的基本使用(三)
// 长度 vs 容量. // 长度是目前里面有几个值 // 容量是最多能放多少个值 func main(){ var a =make(chan int,4) a<-1 a<-2 a< ...
- Tensorflow源码编译常见问题点总结
Tensorflow源码编译分两种:一种是本地源码编译,另一种是针对ARM平台的源码编译. 接下来分别介绍: 一.本地编译 本地编译时,使用的编译工具是本地GCC. 一般会碰到以下问题: 第1个:ex ...
- shell 实用脚本2
脚本功能 拷贝文件夹 及 子文件夹内文件 到 对应的 文件结构下 ,且拷贝前先进行备份 #!/bin/sh #create by lizr -- #脚本功能 #覆盖文件前先备份 cfsuffix=$ ...
- springboot中使用拦截器
5.1 回顾SpringMVC使用拦截器步骤 自定义拦截器类,实现HandlerInterceptor接口 注册拦截器类 5.2 Spring Boot使用拦截器步骤 5.2.1 按照S ...
- 【小知识】比较 x^y 和 y^x 的大小
往前翻几个编号相邻的题目翻到了这么一道题,感觉很好奇就做了一下 (upd:我下午问了下出题人做法,他就把题隐藏了……这不太友好啊……所以我补一下题意:) 题意 给你两个整数 $x$ 和 $y$,求 $ ...
- Hbase性能优化
HBase性能优化方法总结 1. 表的设计 1.1 Pre-Creating Regions 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户 ...
- Centos 7搭建Gitlab服务器以及操作(创建项目,创建群组,创建用户,添加密钥)
一. 安装并配置依赖包 在CentOS系统上安装所需的依赖:ssh,防火墙,postfix(用于邮件通知) ,wget,以下这些命令也会打开 系统防火墙中的HTTP和SSH端口访问 安装前准备 命令: ...
- DevExpress实现为TextEdit设置水印文字的方法
设置水印与消除水印 public static void SetWatermark(TextEdit textEdit, string watermark) { textEdit.Properties ...
- 【Wince-DataTable填充ListView】DataTable的数据填充到ListView控件,适用.Net2.0
在开发WinCE6.0程序的时候,要把DataTable的数据显示到ListView控件上,无法使用绑定, 只能使用循环遍历. 思路:外循环遍历行,内循环遍历列 //DataTable:dt2 //L ...
- [人物存档]【AI少女】【捏脸数据】少(烧)女前(钱)线
点击下载(城通网盘):9.zip 点击下载(城通网盘):AISChaF_20191112224605286.png