英文字母全部转为大写正确的是
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对象
- 在不改变this指向的前提下,this总是指向函数的直接调用者
- 如果有new关键字,this指向new出来的那个对象
- 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