什么是伪类?作为JavaScript程序员的你知道吗?
发布时间:2017-06-13 16:52:06.0

什么是伪类?

伪类对元素进行分类是基于特征(characteristics)而不是它们的名字、属性或者内容;原则上特征是不可以从文档树上推断得到的。

伪类有::first-child ,:link:,vistited,:hover:,:active,:focus,:lang,:right,:left,:first何为伪类?就是css内植类css内部本身赋予它一些特性和功能,也就是你不用再class=...或id=...你就可以直接拿来使用,当然你也可以改变它的部分属性比如:a:link{color:#FF0000;}CSS很多的建议并没有得到浏览器的支持,但有四个可以安全用在超链接上的伪类。

伪类有什么作用?

CSS很多的建议并没有得到浏览器的支持,但有四个可以安全使用的用在连接上的CSS伪类。

◆link用在为访问的连接上。

◆visited用在已经访问过的连接上。

◆hover用于鼠标光标置于其上的连接。

◆active用于获得焦点(比如,被点击)的连接上。

例如:

ExampleSourceCode

a:link{color:red}a:visited{color:green}a:hover{color:blue}a:active{color:orange}

更多的理解?

JavaScript的原型中存在诸多矛盾。某些看起来有点像基于类的语言的复杂语法问题遮蔽了它的原型机制。它不让对象直接从其他对象继承,反而插入了一个多余的间接层,从而使构造函数产生对象。

当一个函数对相被创建时,Function构造器产生的函数对象会运行类似遮掩的一些代码:

this.prototype ={constructor:this};

新函数对象被赋予一个prototype苏花型,其值是包含一个constructor属性且属性值为新函数对象。该Prototype对象是存放继承特征的地方。因为JavaScript语言没有提供一种方法去确定哪个函数是打算用来作结构的,所以每个函数都会得到一个Prototype对象。

constructor属性没什么用。重要的是Prototype对象。当采用构造器调用模式,即使用new前缀去调用一个函数时,这将修改函数执行的方式。如果new运算符是一个方法而不是一个运算符,它可能会像这样执行:

我们也可以定义一个构造器扩充它的原型:

现在我们可以构造一个实例:

我们可以构造另外一个伪类来继承Mammal,这是通过定义它的constructor函数并替换它的prototype为一个Mammal的实例来实现的:

伪类模式本意是想面向对象靠拢,但它看起来格格不入。我们可以隐藏一些不好的细节,这是通过使用method方法定义一个inherits方法来实现的:

我们的inherits和method方法都返回this,这将允许我们可以以级联的样式编程。可以只用一行语句构造我们的Cat:

本人自创的一个小群:621071874,如有交流讨论都可以进来畅谈JS

本人创建的一个交流学习群:621071874,欢迎大牛,小白进群讨论学习。

“伪类”形式可以给不熟悉JavaScript的程序员提供便利,但是也隐藏了该语言的真实本质,借鉴类的表示法可能误导程序员去编写国语深入与复杂的层次结构。许多复杂的类层次结构产生的原因就是静态类型检查的约束。JavaScript完全拜托了那些约束。在基于类的语言中,类的继承是代码重要的唯一方式。JavaScript悠着更多更好的选择。

最后,不知道各位程序员对伪类有什么看法,请多多指教。