刷题总结828

英文字母全部转为大写正确的是

text-transform:capitalize是首字母大写
text-transfrom:lowercase是全部字母为小写
text-transfrom:uppercase是全部字母为大写
font-weight: bold;字体为粗体,

获取下面表单 select域的选择部分的文本

obj.options[obj.selectedIndex].text
<form name="formA">
<select name="a" size="1" id=”obj”>
<option value="a">1</option>
<option value="b">2</option>
<option value="c">3</option>
</select>
</form> 
id选择器,可直接选择 
obj.value 返回当前option节点的value
obj.text    返回当前option节点的文本
obj,options    获得obj下的所有options节点,为一个类数组
obj.selectedIndex   返回当前option节点的索引

this对象

  1. 在不改变this指向的前提下,this总是指向函数的直接调用者
  2. 如果有new关键字,this指向new出来的那个对象
  3. IE中attachEvent中的this总是指向全局对象Window

css3中支持的单位px;em;pt;%;ch;rem;em;vw;vh;deg

在这里插入图片描述在这里插入图片描述

css color

rgb代表红绿蓝,
hsl代表为色相-饱和度-明度(Hue-saturation-lightness)

颜色也可以使用 hsl() 函数符被定义为色相-饱和度-明度(Hue-saturation-lightness)模式。HSL 相比 RGB 的优点是更加直观:你可以估算你想要的颜色,然后微调。它也更易于创建相称的颜色集合。(通过保持相同的色相并改变明度/暗度和饱和度)。

**色相(Hue)**表示色环(即代表彩虹的一个圆环)的一个角度。这个角度作为一个无单位的 <number> 被给出。定义 red=0=360,其它颜色分散于圆环,所以 green=120, blue=240,以此类推。作为一个角度,它隐含像 -120=240 和 480=120 这样的回环。

饱和度明度由百分数来表示。
100% 是满饱和度,而 0% 是一种灰度。
100% 明度是白色, 0% 明度是黑色,而 50% 明度是“一般的”。

HTML 5 用于移动应用程序

现在有个名词叫做大前端方向,包括了web前端,App页面,小程序页面等。
html5平常方面都可以应用,但是,大量应用于移动应用程序和游戏,因为用HTML5的优点主要在于,这个技术可以进行跨平台的使用

下面这段JS程序的执行结果是:

var user = {
 count : 1,
 getCount: function(){
  return this.count;
 }
}
var func = user.getCount
console.log(func())
// 1.调用对象未声明的属性会undifned
    var user={};
    console.log(user.name);//undifned
    
    // 2.使用未赋值只声明的基本数据类型会undifned
    var one;
    console.log(one);//undifned
    
    // 3.使用未声明的变量会报错
    console.log(two);//new_file.html:15 Uncaught ReferenceError: two is not defined

在本题中,this指向的是window , window对象已经自动被浏览器声明了,只是还没有声明count属性,所以也是undifned

**因为在函数调用时,this才会发生绑定,而且是谁调用this,this就指向谁。**在本题中,func的运行环境是全局,因此this指向全局对象。如果去掉this,那只是在全局调用了一个没有声明局部变量的方法。引用它就会报错。
var func =user. getCount 等价于 var func=function(return this.count) 所以this指向window
**var func =user. getCount()**表示调用方法 这个时候才输出1

Boolean 数据类型转换

  • Boolean 可以理解为一个产生逻辑值的对象包装器,用于将非逻辑值转换为逻辑值(true 或者 false)
  • 使用 new 关键词来定义 Boolean 对象
  • 对象 无初始值 或者其值为 0、-0、null、""、false、undefined 或者 NaN,那么对象的值为 false, 除了上面几个,它值都为 true(即使值为字符串 “false” )

HTML 代码中符合规范

有个特别的元素,一个是p一个是a,p是块元素,但是其不能包含除了它本身之外的任何块元素,a是内联元素,但是它可以包含除了它本身外的任意块元素

<table>         <tr>             <td>Data 1</td>             <td>Data 2</td>         </tr>     </table>

在这里插入图片描述
A: ul嵌套ol明显不对
C: p嵌套ul不对
D: 亲测可行, 但是a不能嵌套a是真的,可以试试,内联元素在嵌套块元素的时候,浏览器在解析时,会自动将内联元素补齐,不会报错。但是是错误的语法啊

不能冒泡:abort;resize;error;load;unload;mouseenter;mouseleave;blur;focus

在这里插入图片描述

通过 XMLHttpRequest更新以下元素,即通过div显示状态myDiv.innerHTML = req.status

<div id="statusCode"></div>
var myDiv = document.getElementById ("statusCode"); 
myDiv.innerHTML = req.status;

HTML5 之前的 HTML 版本是4.01

行内元素

块级元素: div、p、h1-h6、form、ul、ol、dl、dt、dd、li、table、tr、td、th、hr
行内元素: span、img、a、label、code、input、abbr、em、b、big、cite、i、q、textarea、select、small、sub、sup,strong、u

标签

<video>标签中controls属性决定是否向用户显示控件
<datalist>标签可以和input标签配合进行使用,来显示列表
<progress>标签不填写max和value会自动滑动
只设置 value 会出现进度条变满,只设置 max 或者两样都不设置,则进度条会自动滑动
<audio> 与</audio> 之间插入的内容是供不支持audio 元素的浏览器显示的
在这里插入图片描述

在javascript中,( 全局)变量在函数外声明,并可从脚本的任意位置访问

1.局部 JavaScript 变量:在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的作用域是局部的)。
2.全局 JavaScript 变量:在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。
3.typeof: typeof 操作符来检测变量的数据类型。
4.new:new是用来实例化一个对象的

<link> 和href配合;<script>和src配合

  • <link> 和href配合

加载css,hypertext reference超文本引用,页面加载到href时不会停下来

  • <script>和src配合

加载script文件,source资源,页面会停下来等待资源加载完毕(并执行完),所以一般js放在body的最下面

call

var obj = {};
obj.log = console.log;
obj.log.call(console,this);

该代码在浏览器中执行,输出的日志结果是window

这道题看似在考this的绑定问题,实际上是通过this绑定为幌子,考察非严格模式下JavaScript语句中“this”默认指向全局对象(window)
题目的关键点在第3行,我们知道,this绑定的优先级是new>bind>call(apply)>obj.func()>默认绑定。也就是说obj.log.call(console, this)语句中,实际上log函数内的this实际上指代的是console(这也是本题最大的陷阱!)。然而实际上这一语句中obj.log.call(console, this)这一语句中打印的this是在外部传进去的,和函数内的this对象根本没有关系!也就是说此时log函数内的this指代console,但是打印的是从外面传进去的this对象,也就是window
为了证明这一点,读者朋友们可以把obj.log.call(console, this)中的console改成任意一个对象,然后在非严格模式下执行,会发现结果都是window。

obj.log = console.log;
//在本行中obj对象中创建了一个函数(即console.log)的引用log,
因为是个这个函数的引用如果想要执行可以有两种方法,第一种是后边加(),第二种是使用apply()或者call(),二者第一个参数都是this,接下来的参数apply是参数数组或者是"arguments",而call的参数是直接的参数值

obj.log.call(console,this);
//如上所述,call的第二个参数是要被传入obj.log()的参数,这行代码其实可等价于console.log(this),而因为这三行代码都是在global环境下定义的(不是函数中的局部变量),所以this就是window.
至于第一个参数为什么是console而不是this,我觉得console被按照this处理了,我试了试,替换后的执行结果相同

代码重写

var obj = {};
// 这里重写log函数,让它打印出this的指向和传入的内容
function mylog(str){
    console.log(this, str);
}
obj.log = mylog;
obj.log.call(console, this) // console, window

这样写,就可以清晰的看出来,打印的第一个,是通过call将mylog函数的this指向了console
而打印的第二个,则只是mylog函数的传参而已,这时的this指向是谁调用指向谁,最后一句写全是window.obj.log.call,所以this指向window

var obj = {};
obj.log = console.log;
obj.log.call(console,this);

代码解析:
obj属性log指向console的log函数
众所周知console的log函数接收一个参数用于打印
第三句代码call使得obj.log函数里的this指向了console,第二个参数作为log函数的参数,所以实际上打印的是call传进去的第二个参数,传啥打印啥
obj.log.call(console,this);等价于obj.log(this);因为call改的this根本没有用到

obj.log和console.log指向同一个函数, 使用obj.log.call(console)其实就是调用console.log()。 console.log(message)接受参数message并打印 obj.log.call(console, this)与console.log(this)相同,而在全局作用域下这个this为window!

JS中slice()方法是选取数组的的一部分,并返回一个新数组。注意:是新数组。

slice不改变原数组,返回截取的数组
Slice 方法能对数组进行浅拷贝,不能实现深拷贝。

var a =[1,2,3];
var b = a.slice();
b.push(4);
console.log(a)

Array.prototype.slice(begin , end)是非入侵式函数,不会改变原数组对象。
begin可选,缺省为0 ; end可选,缺省为末尾。
故最后,a = [ 1,2,3 ] , b =[ 1,2,3,4 ];

给子scope发送消息

Angular 的知识,没有$send.

  • $emit只能向parent controller传递event与data
  • $broadcast只能向child controller传递event与data
  • $on用于接收event与data

$emit() 是向上冒泡
$broadcast() 是向下传播事件

发送消息: $scope.$emit(name, data) 或者 $scope.$broadcast(name, data);

接收消息: $scope.on(name,function(event,data){ });

区别: $emit 广播给父controller   $broadcast 广播给子controller

broadcast 是从发送者向他的子scope广播一个事件。

$emit 广播给父controller,父controller 是可以收到消息

$on 有两个参数function(event,msg)  第一个参数是事件对象,第二个参数是接收到消息信息

下面哪些执行结果为true()

在这里插入图片描述
A:String()作为普通函数使用时,将值转为字符串,不是对象,默认返回是一个空对象,原型为匿名函数的prototype。

String(new function(){ return String('foo'); })
"[object Object]"

B:String()作为构造函数来用时,返回了一个字符串包装对象

String(new function(){ return new String('foo'); })
"foo"

a选项返回了一个String 所以构造函数会默认返回一个空对象
b选项返回一个String对象(因为有new 所以是字符串对象)所以构造函数就返回了这个String对象

在 JS 中,只有 0,-0,NaN,"",null,undefined 这六个值转布尔值时,结果为 false,
C至于你说的[]转换为0,是当[]置于“=="运算符两侧的时候,将会进行隐式转换,
D这里很明显不符合这种情况,所以![]是false,答案错误

在这里插入图片描述
[ ]向number类型的隐式转换是基于“==”运算符的,js中只有 0,-0,NaN,"",null,undefined 这六个值转布尔值时,结果为 false,[]的结果为true

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值